2017-04-06 67 views
0

我是C++的新手,所以這可能是一個非常天真的問題。 我試圖通過調用我的主文件中的函數將數據輸出到文件。我在我的主要函數中多次調用這個函數,這就是爲什麼我需要打開追加模式來編寫文件。這行代碼寫我的輸出文件和工作正常: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(); 

但是,當我做到這一點,我的數據文件在每次運行後都變成了兩倍大小。爲什麼它在後一種情況下不起作用,但在我以前的情況下效果很好?有什麼建議麼?

爲了使其更易於理解,每次運行main函數後,名爲「result_col2.plt」的文件保持相同大小。而名爲「result_col21.plt」的文件的大小加倍(首次運行 - 85 kb,然後170 kb等等)。

+1

我想因爲你只將數據追加到第二個文件。在發佈的代碼中'number'永遠不會改變。 –

+0

實際上,我在主循環中調用「數字」,在循環內更改它,並且爲每個循環調用此函數。感謝您的幫助,我可以通過刪除追加模式選項並在主循環中定義文件名來解決此問題 –

回答

1

,除非你改變INT數= 1,將保持開放,並一遍又一遍地附加result_col21.plt因此加倍你需要爲循環做一個遞增的數量每一次迭代

+0

@Bob當我提出答案時,您的評論確實不可見 – brad

+0

我從電話中撥打了「號碼」主循環中它在一個循環內以及每個循環內改變,我正在調用這個函數。感謝您的幫助,我可以通過刪除附加模式選項並在主循環中定義文件名來解決此問題 –