badbit 用來指出流已經崩潰,屬於系統級錯誤,如不可恢復的讀寫錯誤。
failbit 表示乙個io操作失敗了,比如讀取數字卻讀取的是字元,這是可以恢復的
eofbit 用來表示檔案達到檔案結尾,這也是可以恢復的
goodbit 表示流的狀態正常
注意的是,一但流發生錯誤,其上後續的io操作都會失敗,只有流屬於無錯狀態時,我們才可以
用來讀取資料,寫入資料。
看下面的**
#includeusing namespace std;
void main()
那麼告訴大家,failbit在第一位,eofbit在第二位,badbit在第三位,注意沒有第四位表示goodbit,cin.good()返回1
說明流正常,注意的是遇到檔案結尾代表failbit與badbit都被置位
int a, b;
cin >> a;
cin.clear();//把可恢復的流都恢復
cin.ignore();//注意這個函式的原型是istream& ignore(streamsize n=1;int delim=eof)
//讀取前n個字元或者在遇到delim字元就停止,把讀取的東西丟掉
//這裡相當於把換行符去掉
cin >> b;
注意ignore,你可以設定乙個足夠大的數字,來把緩衝區全部重新整理
看下面的**
cout << "hello" << endl;//注意endl往緩衝區加入乙個空字元然後重新整理緩衝區
cout << "hello" << flush;//flush直接重新整理緩衝區
cout << unitbuf;//使用unitbuf操作符後,所以輸出操作都會立即重新整理緩衝區
cout << nounitbuf;//關閉unitbuf操作符
cin.tie(&cout);//只是用來展示,表示cin和cout繫結在一起
ostream *old_tie = cin.tie(nullptr);//cin不在與其他流關聯,解除繫結後會提公升cin的速度
int a;
cin >> a;
C IO流條件狀態
測試平台 windows7 vs2010 iostate 流的標誌位 條件狀態 具體如下 標誌位 列舉常量,十進位制分別代表0 1 2 4 16,他們與流狀態無關,標誌位都是常量。判斷標誌位是否有效可以用對應標誌位的成員函式。strm badbit 用來指出流已經奔潰 100 在這裡strm表示一種...
C I O庫流狀態標誌位
再來看看輸入狀態標記位 狀態測試函式 狀態設定函式之間的關係 輸入狀態標記位常量有以下幾個 標記位常量 常量 含義 failbit標記位的值 eofbit標記位的值 badbit標記位的值 轉化為10進製 ios failbit 輸入 輸出 流出現非致命錯誤,可挽回 1 0 0 4 ios badb...
C IO庫學習篇
io庫型別和標頭檔案 頭檔案型別 iostream istream 從流中讀取資料 ostream 向流寫入資料 iostream 讀寫流 fstream ifstream 從檔案中讀取資料 ofstream 檔案寫入資料 fstream 讀寫檔案 sstream istringstream 從st...