C++初学者指南 第十一篇(13)

来源:互联网 发布:淘宝店被降权了怎么办 编辑:程序博客网 时间:2024/06/07 00:26
转载请标明出处:http://blog.csdn.net/zhangxingping

基本技能11.12:检查输入输出的状态

C++的输入输出系统针对每一个输入输出操作都维护其状态信息。输入输出流的状态信息是通过一个iostate类型的对象来描述的。这个对象是一个枚举类型,取值的含义如下:

名称

含义

ios::goodbit

没有错误发生

ios::eofbit

当遇到文件结尾的时候,被置为1;否则置为0

ios::failbit

当有可能发生非致命性的输入输出错误的时候被置为1;否则置为0

ios::badbit

当发生致命性输入输出错误的时候被置为1,;否则被置为0

我们有两种方式来获取输入输出的状态信息。第一,就是调用rdstate()函数。他的原型如下:

iostate rdstate();

函数返回当前的错误标记。从上面的iostate类型的取值列表中我们可以猜测的出来,rdstate()函数在没有错误出现的情况下返回的是ios::goodbit;否则返回的是错误对应的值。

另外一种判断是否发生了某种错误的方法就是使用ios的一个或者多个成员函数:

bool bad();

bool eof();

bool fail();

bool good();

其中的bool eof()我们之前已经讨论过了。函数bad()badbit标志位被设置的时候返回truefail()函数在failbit被设置的时候返回truegood()函数在没有错误的情况下返回true。其他情况下他们都返回false

一旦发生了错误,我们应该在程序继续运行之前清除这些错误。此时我们可以使用函数clear(),他的原型如下:

void clear(iostate flags = ios::goodbit);

当其中的参数flags为缺省的ios::goodbit的时候,所有的错误标记都会被清除。否则,我们可以把flags标记设置为自己需要清除的错误标记。

在继续进行下面的内容之前,我们可以在之前的程序中加入这里提到的这些状态报告函数来对我们程序的错误检查力能进行扩展。