求职心切啊!关于c++中s.setstate()的迷惑,希望知道的人不吝赐教

2025-02-25 11:12:22
推荐回答(2个)
回答1:

p288讲到setstate可打开某个指定的条件,表示某个问题的发生,也就是说它会改变其后参数的的位值以表示某种情况的发生,如badbit,failbit,
ifstream::badbit|ifstream::failbit表示用其取或后的结果来设置对象中的对应位

在调用setstate时,使用这个值来开启流条件状态成员中对应的badbit和failbit位
这句的意思是用这个值,其实这个值就是一串二进制码0101011100之类的,而其中的第3位和第5位(打个比方)就是badbit和failbit。

回答2:

is.setstate(some_state):指的是把流is新增加状态——把括号内的状态加到流is上。
注:(1)setstate只能新增加状态,比如不好的状态,而不能减少状态。
(2)比如说,is流是正常的,即is.rdstate() 值是0.执行is.setstate(ifstream::badbit)后,那么is就把括号内的状态——ifstream::badbit也给自己加上了,自己现在状态是原来状态和新增状态的叠加(重复就不叠加了,保持原样)——is.rdstate() = 1
总之,setstate(some_state)就是新加括号内的状态,要清楚状态,必须用clear
is.clear(some_state) :把流的原来状态彻底丢弃,设置成新状态some_state
is.clear() :把流的所有位复位(即把流设置成为正常 即 is.rdstate() = 0的状态).