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 記錄提取有 效字段時失敗(如輸入的類型不滿足,
這裡先介紹一個讀取狀態標志位的 函數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以上這些函數是比較常用的,還有一些 狀態標志位的操作函數如setstate需要了解的可以去查MSDN。
這段時間考試很多,復習比較忙,沒什 麼時間更新。等考完試慢慢來吧。下回書說一下streambuf。