C++语言程序设计

ios类中定义的流状态位：

| 程序12-19

// stream status bits
enum io_state {
goodbit = 0x00, // no bit set: all is ok
eofbit = 0x01, // at end of file
failbit = 0x02, // last I/O operation failed
badbit = 0x04, // invalid operation attempted
hardfail = 0x80 // unrecoverable error
};

下面是用于查询的成员函数定义：
inline int _Cdecl ios::rdstate() { return state; }
inline int _Cdecl ios::eof() { return state & eofbit; }
inline int _Cdecl ios::fail() { return state & (failbit | badbit | hardfail); }
inline int _Cdecl ios::bad() { return state & (badbit | hardfail); }
inline int _Cdecl ios::good() { return state == 0; }
如果我们查询到流的状态出现了不正常的情况，就可以使用iostream提供的成员函数来清除当前的错误状态，使流成为可用的。这种做法是有意义的，当fail（）函数返回1，但是bad（）函数返回的是0。也就是说，上一步流操作可能出现了格式化问题，如果把错误标志清除，流还有可能是可用的。
在iostream类库中，ios类提供了一个成员函数：
void ios::clear( int nState = 0 );
如果参数为0，那么该函数的作用是清除所有错误标志，否则参数可以设置为goodbit、eofbit、failbit、badbit中的一种或者它们的组合，这时该函数的作用是将所有的标志清除，然后将参数指定的标志置位。