当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++ Iostreams用法详解(三)状态符号位

C++ Iostreams用法详解(三)状态符号位

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:840

副标题#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。

 

    关键字:

天才代写-代写联系方式