IO流的条件状态
2016-04-17 20:05
330 查看
标准库定义了这么些IO类型,分别在三个头文件中。
*************************************************************************************************************
iostate是标准库定义的与机器无关的类型,表示条件状态。
标准库的定义:
enum _Iostate
{ // constants for stream states
_Statmask = 0x17};
static const _Iostate goodbit = (_Iostate)0x0;
static const _Iostate eofbit = (_Iostate)0x1;
static const _Iostate failbit = (_Iostate)0x2;
static const _Iostate badbit = (_Iostate)0x4;
static const _Iostate _Hardfail = (_Iostate)0x10;
goodbit表示流未处于错误状态,值为0;
eofbit表示流到达了文件结束, 值为1;
failbit表示一个IO操作失败, 值是2;
badbit表示流已经崩溃, 值是4。
对应的有一些操作:
s.good() 若流s处于有效状态,返回true;
s.eof() 若流的eofbit置位, 返回true;
s.fail() 若流failbit或badbit置位,返回true;
s.bad() 若流badbit置位, 返回true;
s.clear() 把流s中所有条件状态位复位,将流的状态设置为有效,返回void.
****************************************************************************
#include<iostream>
#include<string>
using namespace std;
istream& in(istream& is)
{
string s;
while (is >> s)
{
cout << s << endl;
}
return is;
}
int main()
{
in(cin);
cout << (in(cin)).eofbit<<endl;
cout << (in(cin)).eof() << endl;
(in(cin)).clear();
cout << cin.failbit;
system("pause");
return 0;
}
*************************************************************************************************************
iostate是标准库定义的与机器无关的类型,表示条件状态。
标准库的定义:
enum _Iostate
{ // constants for stream states
_Statmask = 0x17};
static const _Iostate goodbit = (_Iostate)0x0;
static const _Iostate eofbit = (_Iostate)0x1;
static const _Iostate failbit = (_Iostate)0x2;
static const _Iostate badbit = (_Iostate)0x4;
static const _Iostate _Hardfail = (_Iostate)0x10;
goodbit表示流未处于错误状态,值为0;
eofbit表示流到达了文件结束, 值为1;
failbit表示一个IO操作失败, 值是2;
badbit表示流已经崩溃, 值是4。
对应的有一些操作:
s.good() 若流s处于有效状态,返回true;
s.eof() 若流的eofbit置位, 返回true;
s.fail() 若流failbit或badbit置位,返回true;
s.bad() 若流badbit置位, 返回true;
s.clear() 把流s中所有条件状态位复位,将流的状态设置为有效,返回void.
****************************************************************************
#include<iostream>
#include<string>
using namespace std;
istream& in(istream& is)
{
string s;
while (is >> s)
{
cout << s << endl;
}
return is;
}
int main()
{
in(cin);
cout << (in(cin)).eofbit<<endl;
cout << (in(cin)).eof() << endl;
(in(cin)).clear();
cout << cin.failbit;
system("pause");
return 0;
}
相关文章推荐
- Java NIO和IO的主要区别
- 【服务器编程】初步确定服务器逻辑设计
- 时间:NSTimer,代码时运行时间段,
- [Robotics: Aerial Robotics] Quadrotor Kinematics 四旋翼无人机运动学
- SVN代码管理 备份与还原
- 2016阿里安全工程师实习生招聘笔试题
- 1009 连连看
- swift -- 1.简介
- 练习二 1001找方程的解
- njust sequence(二分查找)
- 机房重构--模板方法
- 【自考】第四次考后总结
- cocoapods的移除与安装(有的时候我们需要降低Cocoapods的版本来解决第三方库的兼容问题.)
- Word为什么会报告磁盘空间已满
- poj 2774 Long Long Message
- 【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境搭建
- 【转】CentOS5.6下配置rsync内网同步数据到外网
- Mockito+testNG
- oracle使用TRIGGER在insert数据时往某个字段塞值
- 自定义的环形进度条样式