副标题#e#
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) |
#p#副标题#e#
这里先先容一个读取状态符号位的 函数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。