2015-10-14 70 views
0

我遇到問題。我使用fstream打印到一個文件,但它不是實時打印,它在關閉程序後輸出所有內容(例如,它在程序運行時存儲所有數據,並在退出後立即打印所有內容)。如果我隱藏控制檯FreeConsole();即使退出後也不會輸出任何內容。之前我沒有這個問題(比如半年前)。退出後Fstream輸出

反正這裏是代碼:

#include <fstream> 
#include <windows.h> 

std::fstream file("xx.txt", std::ios::out); 

int main() 
{ 
    FreeConsole(); 
    while(true) 
    { 
     file << "X"; 
     Sleep(500); 
    } 

    file.close(); 
} 
+0

你錯了。它在關閉文件時刷新所有內容。不是當你退出。 – EJP

回答

1

如果要將數據出現瞬間,你需要flush文件:

file << "X"; 
file.flush(); 

ofstream內部維護被寫入寫入數據的緩衝區當您致電flushclose時,請輸入實際文件。此緩衝區的存在可以減少重複寫入文件時發生的磁盤I/O數量。

+0

非常感謝,它的工作原理。我之前沒有使用'flush();',但沒有問題。 – daavid245

+1

你的舊代碼可能已經非常不同了。我無法評論我沒見過的代碼。 – nneonneo

+0

它基本上是一樣:)沒關係,它現在很好用。 – daavid245