日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ofstream写不进txt文件的奇怪问题

發布時間:2025/3/21 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ofstream写不进txt文件的奇怪问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

double m_b[M][N]={0};

string filePath =? "file.txt";
ofstream file(filePath.c_str());

//下面三種都可以寫進去

//file<<"i love"<<endl;
?//file<< 1.23 <<endl;
?//file<< m_b[0][0]<<endl;

//下面這樣確一直寫不進去

for(int i=0;i<M;i++)
?{
??for(int j=0;j<N;j++)
??{
???? ?file<< m_b[i][j]<< " ?";?
????}
?}

?

很奇怪不論" " 里面寫什么,txt里面都是空的,而 將file<< m_b[i][j]<< " ?";?
改成file<< m_b[i][j]<< endl;? 時txt不是空的,可以寫進去,太奇怪了。


?后來發現 我是在這后面設置斷點,來查看的,因為沒有刷新txt內容,所以沒有顯示。

STLPort中的實現如下:

_CRTIMP inline basic_ostream<wchar_t, char_traits<wchar_t> >&__cdecl endl(basic_ostream<wchar_t, char_traits<wchar_t> >& _O) {_O.put('\n');_O.flush(); return (_O); }


它的工作其實就是輸出一個“\n”,不過后面又帶了一句flush(),這一句是強制刷新緩沖區的。

?

如果后面直接寫上 file.close()時,txt會有所寫進去的內容。

因為fstream.close() 會flush(),添加結束標志。

而endl行標志結束,也會flush()一下,所以這時候設斷點查看txt也會出現。

另外引申:

如果每次輸出都刷新緩沖區那就會影響到程序的性能,無法使用緩沖區的優點,所以使用的時候考慮是不是在很多地方需要endl,如果可以還是換成"\n"吧

總結

以上是生活随笔為你收集整理的ofstream写不进txt文件的奇怪问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。