名前空間
変種
操作

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

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

ストリームのエラー状態フラグを、引数 state の値に設定します。デフォルトでは、すべてのエラー状態フラグをクリアする効果を持つ std::ios_base::goodbit が設定されます。

もし rdbuf() がヌルポインタである(つまり、関連付けられたストリームバッファが存在しない)場合、state | std::ios_base::badbit が設定されます。

目次

[編集] パラメータ

state - 新しいエラー状態フラグの設定。以下の定数の組み合わせにすることができます。
Constant 説明
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 適用対象 公開された動作 正しい動作
LWG 412 C++98 現在のエラー状態が
exceptions() マスクにも含まれるビットを含む場合、例外がスローされます。
代わりに新しい
エラー状態をチェックします。

[編集] 関連項目

状態フラグを設定する
(public member function) [編集]
状態フラグを返す
(公開メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)