Namespaces
Variants

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

From cppreference.net

ストリームのエラーステートフラグを設定します。これには 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); // emulate user's input (not portable: see ungetc Notes)
    double n;
    while (std::cout << "Please, enter a number: " && !(std::cin >> n))
    {
        std::cin.clear();
        std::string line;
        std::getline(std::cin, line);
        std::cout << line << "\nI am sorry, but '" << line << "' is not a number\n";
    }
    std::cout << n << "\nThank you for entering the number " << n << '\n';
}

出力:

Please, enter a number: XYZ
I am sorry, but 'XYZ' is not a number
Please, enter a number: 3.14
Thank you for entering the number 3.14

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR Applied to Behavior as published Correct behavior
LWG 412 C++98 現在のエラー状態が
exceptions() マスクに含まれるビットも含む場合に
例外がスローされる
新しいエラー状態を
チェックする

関連項目

状態フラグを設定
(公開メンバ関数)
状態フラグを返す
(公開メンバ関数)