public member function
<ios> <iostream>

std::ios::setstate

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

任何已经设置的错误位标志都不会被清除。请参见成员函数 clear,它执行类似的操作。

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

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

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

此函数行为如同定义为
1
2
3
void 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 的异常。

另见