程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ Iostreams用法詳解(三)狀態標志位

C++ Iostreams用法詳解(三)狀態標志位

編輯:關於C++

iostreams中共有四個狀態標志位定義在ios_base中,具體如下:

namespace std {
    
   class ios_base {
    
   public:
    
      typedef implementation-defined-bitmask-type iostate;
    
      static const iostate badbit;
    
      static const iostate eofbit;
    
      static const iostate failbit;
    
      static const iostate goodbit;
    
      ...
    
   };
    
}

這四個狀態標志位的含義為:

iostate 含義 badbit 記錄流緩沖區的完整性缺失(不可挽回) eofbit 從一個流中提取數據時遇到end-of-file(文件尾 ) failbit 記錄提取有 效字段時失敗(如輸入的類型不滿足,
可通過清除輸入緩沖區來挽回) goodbit 當且僅當上面三種情況都沒有發生時有效(保證 goodbit的值為0)

這裡先介紹一個讀取狀態標志位的 函數rdstate(),這個函數將讀出這四個標志位,返回一個iostate類型。例如當rdstate() & ios::eofbit == 0時,說明在狀態標志位中eofbit位並沒有被置1,也就是說並沒有到文件尾。當然這樣去使 用狀態標志位是非常麻煩的了,還有更簡單的方法了,下面這幾個函數的用法:

bool ios_base::bad( ) const; 如果rdstate() & badbit返回非零置則返回true,否則返回false bool ios_base::fail( ) const; 如果rdstate() & (badbit | failbit) 返回非零置則返回true,否則返回false bool ios_base::eof( ) const; 如果rdstate() & eofbit返回非零置則 返回true,否則返回false bool ios_base::fail( ) const; 如果rdstate() == goodbit(==0)返回非零置則返回true,否則 返回false
(這個函數是最常用的) void ios_base::clear( iostate _State=goodbit,
bool _Reraise=false);
void ios_base::clear (
iostate _State);


這個函數會將標志位設置 為_State參數,默認下時goodbit,即清除標志位。後面一個參數_Reraise是指示是否重新拋出異常,不需要 時置為false

以上這些函數是比較常用的,還有一些 狀態標志位的操作函數如setstate需要了解的可以去查MSDN。

這段時間考試很多,復習比較忙,沒什 麼時間更新。等考完試慢慢來吧。下回書說一下streambuf。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved