c io庫條件狀態

2021-09-21 18:45:18 字數 1158 閱讀 4058

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...