public member function
<ios> <iostream>

std::ios::clear

void clear (iostate state = goodbit);
设置错误状态标志
设置流的内部错误状态标志的新值。

当前标志的值将被覆盖:所有位都将被state中的位替换;如果stategoodbit(值为零),则所有错误标志都将被清除。

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

请注意,更改state可能会抛出异常,具体取决于传递给成员exceptions的最新设置。

可以使用成员函数rdstate获取当前状态。

参数

state
类型为ios_base::iostate的对象,其值可以是以下状态标志成员常量的任意组合:

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

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// clearing errors
#include <iostream>     // std::cout
#include <fstream>      // std::fstream

int main () {
  char buffer [80];
  std::fstream myfile;

  myfile.open ("test.txt",std::fstream::in);

  myfile << "test";
  if (myfile.fail())
  {
    std::cout << "Error writing to test.txt\n";
    myfile.clear();
  }

  myfile.getline (buffer,80);
  std::cout << buffer << " successfully read from file.\n";

  return 0;
}

在此示例中,myfile是为输入操作打开的,但我们对其执行了输出操作,因此设置了failbit。然后,示例调用clear以移除标志,并允许对myfile尝试进一步的操作,例如getline

数据竞争

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

异常安全

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

另见