0

为了避免不断打开和关闭我正在写入的多个文件,我正在尝试使用 ofstream 对象的向量。到目前为止,我的代码如下所示:

std::vector<shared_ptr<ofstream>> filelist;

void main()
{
  for(int ii=0;ii<10;ii++)
  {
     string filename = "/dev/shm/table_"+int2string(ii)+".csv";
     filelist.push_back(make_shared<ofstream>(filename.c_str()));
  }

}

我正在使用 ofstream 指针向量,因为 ofstream 没有复制构造函数。此外,我使用的是共享指针,因为它应该更能防止内存泄漏。

以上成功在目标目录中创建了我想要的文件。如果我想关闭文件,我可以做类似 filelist[5]->close();

我不确定的唯一部分是我如何实际写入每个文件。通常,对于单个文件,我会执行以下操作:

ofstream fout;
fout.open("myfile.txt");
fout<<"some text"<<endl;

在这种情况下,我想使用的 << 等价物是什么?

4

2 回答 2

2

试试这个:

for (auto& stream : filelist)
{
    *stream << "some text" << std::endl;
}
于 2013-04-01T02:55:47.223 回答
1

您需要一个ostreamostream&

filelist[i]shared_ptr<ostream>在这种情况下,您可以将其视为基本上是ostream*. 这意味着这*filelist[i]给了你一个ostream&(通过operator*重载)。所以,你会使用类似的东西*filelist[i] << "some text << std::endl;

于 2013-04-01T02:55:54.643 回答