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

另見