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。
看看下面一段简单的代码:
测试数据:
1200
abcd
运行结果:
1200
bad data
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
相关文章推荐
- 读书笔记:C++ Primer系列(6)—— 标准库类型之vector
- 读书笔记:C++ Primer系列(7)—— 标准库类型之iterator
- C++ Primer 读书笔记: 第8章 标准IO库
- C++ Primer 第四版读书笔记(七)之标准IO库
- 读书笔记:C++ Primer系列(5)—— 标准库类型之string
- 读书笔记:C++ Primer系列(8)—— 标准库类型之bitset
- C++ primer 读书笔记系列——(4)函数
- C++ primer 读书笔记--第三章 标准库类型
- 读书笔记:C++ Primer系列(3)—— 关于变量
- 《C++ Primer》读书笔记——第八章_IO库
- C++ primer 读书笔记系列——(6)顺序容器(二)
- 《C++ Primer》读书笔记第八章-1-IO库
- C++ Primer 第八章 标准IO库
- C++ primer 读书笔记系列——(1)标准库string类型
- C++ primer 读书笔记系列——(6)顺序容器
- 【C++ Primer】【学习笔记】【第八章】标准IO库之:输出缓冲区的管理
- 【C++ Primer】标准IO库
- 读书笔记:C++ Primer系列(15)——构造函数与析构函数
- 读书笔记:C++ Primer系列(10)—— 数组与指针(2)
- 《C++ Primer》读书笔记-第三章 03 标准库类型vector