對於C++文件的讀寫,個人認爲關鍵之處在於牢記“文件流對象和文件的綁定是否正常”
要想讀寫文件,必須先定義文件的流對象,並且將定義的流對象與想要處理的文件進行綁定。對文件進行綁定,少不了涉及文件名稱。
在C++中,文件名作爲實參要求是C風格的字符串,而不是C++中的string類對象。通常的處理方法是用直接初始化的方法,括號中是C風格字符串;或者是將文件名賦值給一個string類對象,然後再調用c_str()成員函數進行轉化。
例如:
string filename = "d://f1.txt";
fstream File(filename.c_str());
fstream File1;
File1.open("d://f1.txt");或者是File1.open(filename.c_str());
通過上面的方法,就已經將流對象與想要處理的文件綁定起來了。
C++中對文件的處理,時刻要記得檢測流對象的狀態,因爲它直接影響你的綁定是否成功。
通常有幾個管用手法在編程時是提倡的:
1.檢測文件是否打開成功:
if(!文件流對象)
cerr<<"errors"<<endl;
2.文件操作完畢後,使用close和clear成員函數關閉文件和清除流的錯誤狀態
用以上兩個操作主要有如下原因:
1)C++中文件流對象一旦打開,就一直與所綁定的文件關聯,如果想要利用此流對象與其他文件綁定,需要先關閉當前的文件,然後在打開另一個文件;2)一般讀取文件時,當到達文件結束符或者出現錯誤,流對象此時都會處於錯誤狀態,僅僅關閉文件不能是流對象恢復正常,需要對其使用clear操作,使流對象有效。
下面是一個例子:在d盤有兩個文件命名爲f1.txt和f2.txt。文件裏面簡單隨便寫了幾句話。使用visual studio寫了一個例子。
程序:
結果
如果在處理第二個文件之前,不進行close和clear操作,編譯能通過,但是所得結果爲:
因爲在第一個文件處理後,流處於不可用狀態,一個不可用的流,對其進行綁定,就是空談!