如何改进我的课程以创建输出文件
Posted
技术标签:
【中文标题】如何改进我的课程以创建输出文件【英文标题】:how to improve my class to create output files 【发布时间】:2022-01-21 17:07:51 【问题描述】:由于我经常需要这个,我想写一个类来处理主要的流活动。
我可以像这样使用的东西:
OutputFile out("output.txt");
for (int i = 0; i < 10; ++i)
out << i << "\n";
为此,我编写了以下类:
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";
我应该如何修改我的类以便我可以用作
out << i << "\n";
【问题讨论】:
你似乎希望我们 std::ofstream 作为公共基类而不是数据成员。 不需要析构函数。当out
变量生命周期结束时,std::ofstream
将自动为您关闭文件。
【参考方案1】:
您可以在课堂上重载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;
;
【讨论】:
以上是关于如何改进我的课程以创建输出文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用图像的 tesseract 输出从另一个图像创建可搜索的 pdf