C 中檔案流操作的一些問題

2021-04-12 16:28:19 字數 771 閱讀 8222

*如果用open()方法開啟乙個檔案,測試開啟是否成功,一般要經過以下兩個步驟:

(1)假設流檔案物件為myfile,在open()前先呼叫myfile.clear()清除錯誤狀態資訊,有可能以前呼叫myfile中的方法出現錯誤,如果不清除,open()方法雖然呼叫成功,但它不會清除錯誤位(open()只有發生錯誤時才置錯誤位)導致後面的測試不正確;

(2)open()方法如果發生錯誤會置failbit,可以用fail()方法測試。寫成**就是:

...myfile.clear();

myfile.open(lpszfilename,ios::binary);

if(myfile.fail())

...(3)另外,呼叫open()方法後,也可以用is_open()來測試,但就像上面說的,如果在open()以前myfile流已經發生過錯誤,如有可能置過faibit,但沒有clear()。儘管用is_open()測試可能通過,但後面在讀寫流的時候仍有可能發生錯誤!

*如果使用

fstream來操作檔案,要使用

帶中文的檔名或路徑名會操作失敗,可以用下面的方法的解決:

使用setlocale(lc_all,"chinese-simplified");把條語句放在程式的最開始執行部分即可!

*如果要讀取檔案的修改時間,請注意時間的轉換,否則提取的檔案時間會有誤:

所以在windows下提取檔案時間大致經歷的步驟是:getfiletime->filetimetosystemtime->systemtimetotzspecificlocaltime

C 一些問題

1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...

關於中文編碼的一些問題

在檔案的第一行加入如下 能夠解決目前的問題。coding utf 8 具體內容待完善 python核心庫的open函式不支援吸入unicode,使用codecs模組可以解決這個問題。使用方法如下 import codecs f codecs.open filename w utf 8 普通寫入等操作...

C 操作MYSQL遇到的一些問題

上面是我裝的一些庫 大大安利vcpkg安裝時一定要使用powershell進行編譯 裝上vcpkg後裝ligmariadb這個庫,這個對mysql操作還是挺方便的,然後說一下 在裝庫時碰到的一些問題 1.網路問題 二.在使用mysql.h遇到的一些問題 這個問題,我查了很多地方,才找到原因,是我當時...