Cpp Primer<<学习IO标准库--条件状态_5
来源:互联网 发布:mac雷蛇驱动安装失败 编辑:程序博客网 时间:2024/05/22 15:21
条件状态
1.条件状态
所有流对象都包含一个条件状态成员,该成员有setstate和clear操作管理。setstate操作用于改变条件成员的状态,clear操作将所有条件重设为有效状态。使用setstate,操作操作可打开某个指定的条件,用于表示某个问题的发生。除了添加的标记状态,setstate将保存其它已存在的状态变量不变。
这个状态成员为iostate类型,由各个iostream类分别定义的机器相关的整形。
该状态成员以二进制位(bit)的形式使用。
每个IO类还定义了三个iostate类型的常量值,分别表示特定的位模式,该常量值用于支出特定类型的IO条件,可与位操作符一起使用,方便一次操作检查或设置多个标志。
badbit标志着系统级的故障,如无法恢复的读写错误。
流的状态有bad、fail、
eof和good操作解释。前三者中任意一个为true,则检查本身将像是该流处于错误状态。否则,good操作将返回true.
clear和setstate操作用于改变条件成员的状态。
2.流状态查询和控制
int ival;// read cin and test only for EOF:loop is executed even if there are other IO failureswhile (cin >> ival,!cin.eof()) { if (cin.bad()) // input stream si corrupted;bail out throw runtime_error(“IO stream corropted”); if (cin.fail()) { // bad input cerr << “bad data,try again”; // warn the user cin.clear(istream::failbit); // reset the stream continue; // get next input } //ok to process ival}
3.条件状态的访问
rdstate成员函数返回一个iostate类型的值,该值记录当前流的条件状态:
//remember curret of cinistream::iostate old_state = cin.rdstate();cin.clear();process_input(); // use cincin.clear(old_state); // now reset cin to old state
4.多种状态的处理
需要设置多个状态二进制可以多次调用setstate或者clear函数实现,或者是使用按位或操作符(|)一次调用中生成多个状态位。按位或操作使用其操作数的二进制位模式产生一个整型数值。
is.setstate(ifstream::badbit | ifstream::failbit); //sets both the badbit and the failure
同时打开is对象的failbit和badbit且都设置为1。
0 0
- Cpp Primer<<学习IO标准库--条件状态_5
- 【C++ Primer】【学习笔记】【第八章】标准IO库之:条件状态
- Cpp Primer<<学习IO标准库--面向对象的标准库_4
- 重温《C++ Primer》笔记二 标准IO库的条件状态
- Cpp Primer<<学习IO标准库--输出缓冲区的管理、文件输入与输出_6
- Cpp Primer<<学习IO标准库--文件模式、字符串流_7
- C++ Primer 学习笔记_25_标准I/O库 --面向对象的标准库、条件状态、输出缓冲区的管理
- IO标准库管理一系列条件状态成员
- C++语言之标准io库条件状态
- C++primer 标准IO库
- c++ primer 标准IO库
- [C++ Primer] 标准IO库
- 【C++ Primer】标准IO库
- C++Primer 标准IO库
- C++ primer 标准IO库
- c++primer学习笔记 ( 第八章 标准IO库)
- 【C++ Primer 学习笔记】chapter8 标准IO库
- C++Primer学习笔记(8)标准IO库
- 软件项目管理之我见
- 对Android自定义控件中的onMeasure方法的理解
- Java中Properties类
- Python特殊语法:filter、map、reduce、lambda [转]
- socket通信简介
- Cpp Primer<<学习IO标准库--条件状态_5
- ASP.NET WebForm Form表单如何实现MVC那种“自动装配”效果呢?
- 某程序员求职信
- CentOS7 + mysql-cluster-7.4.6 配置部署
- iOS开发网络—11发送json数据给服务器以及多值参数
- extjs的mvc搭建
- iOS开发网络—12数据缓存
- 排序算法(1):简单选择排序和堆排序
- 第十四周 项目四:处理C++源代码的程序