ofstream的C ++向量,如何写入一个特定的元素

时间:2013-04-01 02:49:14

标签: c++ pointers vector ofstream

为了避免连续打开和关闭我写的多个文件,我试图使用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] - &gt; close();

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

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

等同于&lt;&lt;我想在这种情况下使用吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

for (auto& stream : filelist)
{
    *stream << "some text" << std::endl;
}

答案 1 :(得分:1)

您需要ostreamostream&

filelist[i]shared_ptr<ostream>,在这种情况下,您可以将其视为ostream*。这意味着*filelist[i]会为您提供ostream&(通过operator*重载)。所以,你会使用像*filelist[i] << "some text << std::endl;

这样的东西