簡體   English   中英

C ++:使用隨機名稱輸出文件

[英]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.

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