C++ 學習之文件的讀寫

對於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操作,編譯能通過,但是所得結果爲:

因爲在第一個文件處理後,流處於不可用狀態,一個不可用的流,對其進行綁定,就是空談!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章