您的位置:首页 > 编程语言 > C语言/C++

C++ primer 读书笔记系列——(5)标准IO库

2010-09-02 23:55 429 查看
IO标准库的条件状态

strm::badbit strm::iostate类型,用于指出被破坏的流

strm::failbit strm::iostate类型,用于指出可修复的失败的IO

strm::eofbit strm::iostate类型,用于指出流已经到达文件结束符

s.eof() 如果设置了eofbit值,则返回true;

s.fail() 如果设置了failbit值,则返回true;

s.bad() 如果设置了badbit值,则返回true;

s.clear() 将流中所有状态值都设为有效状态;

s.clear(state) 将流中state所指定的状态值设为有效值;

s.setstate(flag) 给s添加指定条件,flag类型为strm::iostate型

流的状态由bad,fail,eof,good揭示。如果bad,fail,eof中有一个为true,则流的状态为错误状态,而若这三者没有一个为true,则good操作返回true。

看看下面一段简单的代码:

#include<iostream>
#include<string>
#include<stdexcept>

using namespace std;

int main()

{
int str;

cin>>str;

try
{
if(cin.fail())
{
cerr<<"bad data"<<endl;
cin.clear(istream::failbit);
}
else if(cin.bad())
throw runtime_error("IO stream corrupted");
else
cout<<str<<endl;
}

catch(runtime_error e)
{
cout<<e.what();
return -1;
}

return 0;

}


测试数据:

1200

abcd

运行结果:

1200

bad data
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: