std::basic_ios<CharT,Traits>::clear

從 cppreference.com
< cpp‎ | io‎ | basic ios
 
 
 
 

通過以 state 的值賦值以設置流錯誤狀態標誌。默認賦值 std::ios_base::goodbit 以清除所有錯誤狀態標誌。

如果 rdbuf() 是空指針(即沒有關聯流緩衝),那麼賦值 state | std::ios_base::badbit。可能會拋出異常。

目錄

[編輯] 參數

state - 新的錯誤狀態標誌設置。它可以是下列常量的組合:
常量 解釋
goodbit 無錯誤
badbit 不可恢復的流錯誤
failbit 輸入/輸出操作失敗(格式化或提取錯誤)
eofbit 關聯的輸出序列已抵達文件尾


[編輯] 返回值

(無)

[編輯] 異常

如果新的錯誤狀態包含了一個 exceptions() 掩碼也包含的位,那麼拋出 failure 類型的異常。

[編輯] 示例

無參數的 clear() 能用於在不期待的輸入後反設置 failbit;對於 std::cin.putback(c) 參見 ungetc

#include <iostream>
#include <string>
 
int main()
{
    for (char c : {'\n', '4', '1', '.', '3', '\n', 'Z', 'Y', 'X'})
        std::cin.putback(c); // 模拟用户输入(不可移植:见 ungetc 注解)
 
    double n;
    while (std::cout << "请输入数字:" && !(std::cin >> n))
    {
        std::cin.clear();
        std::string line;
        std::getline(std::cin, line);
        std::cout << line << "\n抱歉,但 '" << line << "' 不是数字\n";
    }
    std::cout << n << "\n感谢输入数字 " << n << '\n';
}

輸出:

请输入数字:XYZ
抱歉,但 'XYZ' 不是数字
请输入数字:3.14
感谢输入数字 3.14

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 出版時的行為 正確行為
LWG 416 C++98 當前錯誤狀態包含了 exceptions() 也包含的位時會拋出異常 改成檢查修改後的錯誤狀態

[編輯] 參閱

設置狀態標誌
(公開成員函數) [編輯]
返回狀態標誌
(公開成員函數) [編輯]