如何改进我的 class 以创建输出文件
how to improve my class to create output files
因为我经常需要这个,所以我想写一个 class 来处理主要的流活动。
我可以像这样使用的东西:
OutputFile out("output.txt");
for (int i = 0; i < 10; ++i)
out << i << "\n";
为此,我写下了class:
class OutputFile {
std::string filename;
std::ofstream out;
public:
explicit OutputFile(std::string filename) {
this->filename = filename;
out.open("output/" + filename);
}
~OutputFile() {
out.close();
}
std::ofstream& operator()() { return out; }
};
这几乎是我想要的,但是我重载了运算符 ()
,因此在上面的示例中我必须使用
out() << i << "\n";
我应该如何修改我的 class 以便我可以用作
out << i << "\n";
您可以在 class 中重载 operator<<
。
class OutputFile {
std::string filename;
std::ofstream out;
public:
explicit OutputFile(const std::string &filename)
: filename(filename), out("output/" + filename) {}
template<typename T>
OutputFile& operator<<(const T &value) {
out << value;
return *this;
}
};
因为我经常需要这个,所以我想写一个 class 来处理主要的流活动。
我可以像这样使用的东西:
OutputFile out("output.txt");
for (int i = 0; i < 10; ++i)
out << i << "\n";
为此,我写下了class:
class OutputFile {
std::string filename;
std::ofstream out;
public:
explicit OutputFile(std::string filename) {
this->filename = filename;
out.open("output/" + filename);
}
~OutputFile() {
out.close();
}
std::ofstream& operator()() { return out; }
};
这几乎是我想要的,但是我重载了运算符 ()
,因此在上面的示例中我必须使用
out() << i << "\n";
我应该如何修改我的 class 以便我可以用作
out << i << "\n";
您可以在 class 中重载 operator<<
。
class OutputFile {
std::string filename;
std::ofstream out;
public:
explicit OutputFile(const std::string &filename)
: filename(filename), out("output/" + filename) {}
template<typename T>
OutputFile& operator<<(const T &value) {
out << value;
return *this;
}
};