ifstream類使用心得一則

2021-09-05 23:52:02 字數 1068 閱讀 4006

乙個朋友向我請教乙個程式,相關**如下:

string s;

vector vs;

ifstream infile("f:\\myreceivefiles\\fillcompo_kp.mod", ios::in);

while (getline(infile, s))

vs.push_back(s);

coutinfile.open("f:\\myreceivefiles\\fillcompo_line.mod", ios::in);

while (getline(infile, s))

vs.push_back(s);

infile.close();

cout我測試了一下這段**,發現確實存在這個問題,但是這段**看起來並沒什麼錯誤啊。我的初步判斷是在關閉檔案後可能還需要什麼操作。於是我上網搜尋資料,搜了一陣子,終於找到一條:關閉流並不能改變流物件的內部狀態。如果最後的讀寫操作失敗了,物件的狀態將保持為錯誤模式,直到執行 clear 操作重新恢復流的狀態為止。呼叫 clear 後,就像重新建立了該物件一樣。如果程式設計師需要重用檔案流讀寫多個檔案,必須在讀另乙個檔案之前呼叫 clear 清除該流的狀態。

因此需要在呼叫檔案流物件的close函式後加一句**:infile.clear(ios::goodbit);就可以了,**如下:

string s;

vector vs;

ifstream infile("f:\\myreceivefiles\\fillcompo_kp.mod", ios::in);

while (getline(infile, s))

vs.push_back(s);

coutinfile.clear(ios::goodbit);// ios::goodbit時表示無錯誤,可以繼續輸入或者操作

infile.open("f:\\myreceivefiles\\fillcompo_line.mod", ios::in);

while (getline(infile, s))

vs.push_back(s);

infile.close();

cout

ifstream類使用心得一則

朱金燦 string s vector vs ifstream infile f myreceivefiles fillcompo kp.mod ios in while getline infile,s vs.push back s coutinfile.open f myreceivefiles...

ifstream類使用心得一則

乙個朋友向我請教乙個程式,相關 如下 string s vector vs ifstream infile f myreceivefiles fillcompo kp.mod ios in while getline infile,s vs.push back s coutinfile.open f...

ifstream類使用心得一則

朱金燦 string s vector vs ifstream infile f myreceivefiles fillcompo kp.mod ios in while getline infile,s vs.push back s coutinfile.open f myreceivefiles...