public member function
<ios> <iostream>

std::basic_ios::setstate

void setstate (iostate state);
设置错误状态标志
通过将当前标志与参数 state 中的标志组合(如同执行按位或运算)来修改当前内部的错误状态标志

任何已设置的错误位标志都不会被清除。请参阅成员 clear 以了解一个具有类似功能的函数。

如果在调用此函数时,流没有关联的流缓冲区,则 badbit 标志会自动设置(无论在参数 state 中传递的该位的值是什么)。

请注意,根据传递给成员 exceptions 的最新设置,更改 state 可能会抛出异常。

当前状态可以通过成员函数 rdstate 获取。

此函数行为如同定义为
1
2
3
void basic_ios::setstate (iostate state) {
  clear(rdstate()|state);
}

参数

state
一个 ios_base::iostate 类型的对象,它可以接受以下成员常量的任何组合作为值

iostate
(成员常量)
表示检查状态标志的函数
good()eof()fail()bad()rdstate()
goodbit无错误(值为零 iostatetruefalsefalsefalsegoodbit
eofbit到达文件尾falsetruefalsefalseeofbit
failbitI/O 操作的逻辑错误falsefalsetruefalsefailbit
badbitI/O 操作的读/写错误falsefalsetruetruebadbit
eofbitfailbitbadbit 是具有实现定义值的成员常量,可以进行组合(就像使用按位 OR 运算符一样)。
goodbit 为零,表示其他位均未设置。

返回值



数据竞争

修改流对象。
并发访问同一个流对象可能导致数据争用。

异常安全

基本保证:如果抛出异常,流处于有效状态。
如果由此产生的错误状态标志不是 goodbit,并且成员 exceptions 已被设置为针对该状态抛出,则它将抛出成员类型为 failure 的异常。

另见