C++基础之流状态

流状态

cin和cout对象中包含一个描述流状态(stream state)的数据成员(从ios_base 中继承过来的)。流状态(被定义为iostate类型,而iostate是一种bitmask类型)由3个ios_base元素组成:eofbit、badbit、failbit,其中每个元素都是一位,可以是1(设置)或0(清除)。每个元素及其操作功能如下表:

成员描述
eofbit如果到达文件的末尾,则设置为1
badbit如果流被破坏,这设置为1;例如文件读取失败
failbit如果输入操作未能读取预期的字符或输出操作没有写入预期的字符,则设置为1
goodbit另一种表示0的方法
good()如果流可以使用,则返回true ,否则返回false
eof()如果eofbit被设置。则返回true
bad()如果badbit被设置。则返回true
fail()如果failbit被设置,则返回true
rdstate()返回流状态
exceptions()返回一个位掩码,指出哪些标记导致异常被引发
exceptions(isostate ex)设置哪些状态导致clear()引发异常;例如ex是eofbit,则如果eofbit被设置,clear()将被引发异常
clear(iostate s)将流状态设置为s; s的默认值是0;
setstate(iostate s)调用clear(rdstate()

设置状态

设置状态的方法有两种,一种是clear()和setstate().
其中clear()是将状态设置为它的参数。例如 clear();是将所有的状态都设置为0。clear(eofbit);是将eofbit设置为1,其他的设置为0.
setstate()只影响其参数中已经设置的位,不影响其他位。
设置状态目的为了

I/O与异常

当某个输入函数设置了eofbit或badbit或failbit都不会引发异常。
只用在exceptions()的返回值中的一位被设置而当前状态的中对应位也被设置,就会引发ios_base::failure的异常。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值