C++ IOS::clear() 函式



C++ 的std::ios::clear()函式用於重置輸入/輸出流的狀態標誌。由於無效輸入或輸出失敗等操作,流可能會進入錯誤狀態。呼叫此函式時,它會清除這些錯誤標誌,將流恢復到良好狀態,以便可以執行進一步的 I/O 操作。

語法

以下是 std::ios::clear() 函式的語法。

void clear (iostate state = goodbit);

引數

  • state - 一個型別為 ios_base::iostate 的物件,其值可以是以下成員常量的任意組合。

iostate

(成員常量)

指示 用於檢查狀態標誌的函式
good() eof() fail() bad() rdstate()
goodbit 無錯誤(零值 iostate true false false false goodbit
eofbit 輸入操作到達檔案末尾 false true false false eofbit
failbitI/O 操作的邏輯錯誤 false false true false failbit
badbitI/O 操作的讀/寫錯誤 false false true true badbit

返回值

此函式不返回任何內容。

異常

如果丟擲異常,則流處於有效狀態。如果結果錯誤狀態標誌不是 goodbit 並且成員異常設定為為此狀態丟擲,則它會丟擲一個成員型別為 failure 的異常。

資料競爭

修改流物件。

併發訪問同一流物件可能會導致資料競爭。

示例

在以下示例中,我們將考慮 clear() 函式的基本用法。

#include <iostream>
int main()
{
    std::cin.setstate(std::ios::failbit);
    if (std::cin.fail()) {
        std::cout << "Error State Detected. Clearing Errors.\n";
        std::cin.clear();
    }
    std::cout << "Stream Is Now Ready For Use.\n";
    return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出 -

Error State Detected. Clearing Errors.
Stream Is Now Ready For Use.

示例

讓我們看一下下面的示例,我們將清除失敗輸入後的 std::cin。

#include <iostream>
int main()
{
    int x;
    std::cout << "Enter a number: ";
    std::cin >> x;
    if (std::cin.fail()) {
        std::cerr << "Clearing the error state.\n";
        std::cin.clear();
        std::cin.ignore(10000, '\n');
    } else {
        std::cout << "Entered Input : " << x << '\n';
    }
    return 0;
}

輸出

以上程式碼的輸出如下 -

Enter a number: 1212
Entered Input : 1212
ios.htm
廣告