[英]C++: file output with a random name
我是C ++的新手,所以這可能是一個非常幼稚的問題。 我試圖通過從主文件調用函數將數據輸出到文件。 我在主函數中多次調用了此函數,這就是為什么我需要打開追加模式來寫入文件的原因。 這行代碼寫了我的輸出文件,並且工作正常:
ofstream outFile("result_col2.plt",ios::app);
.
.
outFile.close();
但是,我想使輸出文件的名稱隨機,我正在嘗試這樣做:
int number = 1; // let's say
ostringstream convert;
convert << number;
string iLevel_str = convert.str();
string fname = "result_col2" + iLevel_str + ".plt";
ofstream outFile(fname.c_str(),ios::app);
.
.
outFile.close();
但是,當我這樣做時,每次運行后,我的數據文件的大小就會變成原來的兩倍。 為什么在后一種情況下不起作用,但在我的前一種情況下效果很好? 有什么建議么?
為了使其更易於理解,每次運行主函數后,名為“ result_col2.plt”的文件將保持相同大小。 而名為“ result_col21.plt”的文件的大小則增加了一倍(首先運行-85 kb,然后170 kb,依此類推。)
除非您更改int number = 1,否則它將不斷打開並不斷添加result_col21.plt,因此,加倍操作需要進行for循環,每次迭代均需遞增該數字
如果只需要隨機文件名,則可以使用std::tmpnam()
標准函數,但是它將生成位於系統“ temp”目錄中的隨機文件名。
有關詳細信息,請參閱: http : //en.cppreference.com/w/cpp/io/c/tmpnam
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.