如何改进我的课程以创建输出文件

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&lt;&lt;

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;
  
;

【讨论】:

以上是关于如何改进我的课程以创建输出文件的主要内容,如果未能解决你的问题,请参考以下文章

改进 PHP 数组以在 AJAX 上使用

如何使用图像的 tesseract 输出从另一个图像创建可搜索的 pdf

Linux 124课程 4 创建,查看,编辑文件

如何改进我的查询以防止“PHP 致命错误:允许的内存大小”(laravel 5.2 中的排序和分页)

将我的设计自动化输出保存为 .zip 文件以保留材料纹理

用于创建课程列表的 SQL 查询。通过...分组?