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的異常。

另見