日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件的奇怪问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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