std::basic_ios<CharT,Traits>:: clear
|
void
clear
(
std::
ios_base
::
iostate
state
=
std::
ios_base
::
goodbit
)
;
|
||
ストリームのエラーステートフラグを設定します。これには state の値を代入します。デフォルトでは std::ios_base::goodbit を代入し、これにより全てのエラーステートフラグがクリアされます。
rdbuf() がヌルポインタの場合(つまり関連付けられたストリームバッファがない場合)、 state | std:: ios_base :: badbit が設定されます。
目次 |
パラメータ
| state | - |
新しいエラーステートフラグの設定。以下の定数の組み合わせを指定できます:
|
戻り値
(なし)
例外
新しいエラー状態が、 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() マスクに含まれるビットも含む場合に 例外がスローされる |
新しいエラー状態を
チェックする |
関連項目
|
状態フラグを設定
(公開メンバ関数) |
|
|
状態フラグを返す
(公開メンバ関数) |