ofstream 使用的一點主意事項

2021-06-16 17:05:27 字數 618 閱讀 1254

有如下**段:

ofstream ofs;

while(...)

ofs.close();

你也發現了,這裡在第一次open之前多餘地呼叫了一次close,結果就是,建立了輸出檔案,但卻沒有按預期寫入任何內容。

原因:第一次呼叫close會產生錯誤標記,從而導致寫操作失效。呼叫相關函式檢測狀態的結果是:

is_open(); //true

eof();//false

bad(); //false

fail();         //true

good();//false

不正確地呼叫close不會導致任何異常,但**卻出現了潛在的隱患,僅僅使用is_open() 或 bad()還無法檢測出這個錯誤,這就是需要注意的地方。其實在第一次呼叫close之後呼叫clear清除一下錯誤標記也是有效的,但**不應該這樣寫。

結論

1、謹慎呼叫fstrea的close函式,在呼叫前應當使用is_open檢查是否開啟,再決定是否呼叫close;

2、open完乙個檔案之後除了呼叫is_open來檢查開啟狀態外,還應該使用good來進一步確定檔案流的狀態正常。

ofstream 使用的一點主意事項

有如下 段 ofstream ofs while ofs.close 你也發現了,這裡在第一次open之前多餘地呼叫了一次close,結果就是,建立了輸出檔案,但卻沒有按預期寫入任何內容。原因 第一次呼叫close會產生錯誤標記,從而導致寫操作失效。呼叫相關函式檢測狀態的結果是 is open tr...

MyEclipse Tomcat的一點使用經驗

我用的是myeclipse6.5 1 編碼 在project裡可以設定整個工程的編碼,而對於每個檔案的編碼則是在開啟檔案後,在edit下拉列表的最下方有乙個setencoding,那裡可以設定。2 關閉自動更新 在window preferences myeclipse的community esse...

adb 使用的一點命令

自用,只貼自己常用的,新手上路 目前使用mac電腦,終端下cd 編輯 bash profile export sdk home users library android sdk export path exportpath sdk home tools sdk home platform tool...