[英]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;
}
您需要使用ostream
或ostream&
。
filelist[i]
是shared_ptr<ostream>
,在這種情況下,您基本上可以將其視為ostream*
。 這意味着*filelist[i]
為您提供了ostream&
(通過operator *重載)。 因此,您將使用*filelist[i] << "some text << std::endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.