簡體   English   中英

ofstream的C ++向量,如何寫入一個特定元素

[英]C++ vector of ofstream, how to write to one particular element

為了避免持續打開和關閉我正在寫入的多個文件,我嘗試使用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;

在這種情況下我想使用的<< <<是什么?

嘗試這個:

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

您需要使用ostreamostream&

filelist[i]shared_ptr<ostream> ,在這種情況下,您基本上可以將其視為ostream* 這意味着*filelist[i]為您提供了ostream& (通過operator *重載)。 因此,您將使用*filelist[i] << "some text << std::endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM