名前付き要件: FormattedInputFunction
提供: cppreference.com
要件
FormattedInputFunction は以下の動作を行うストリーム入力関数です。
- 自動記憶域期間を持つ basic_istream::sentry 型のオブジェクトを
noskipws引数をfalseに設定して構築します。 これは以下の動作を行います。
- 入力ストリームに eofbit または badbit がセットされている場合、
failbitも同様にセットし、さらに、この入力ストリームの例外マスクで failbit に対する例外が有効な場合、 ios_base::failure を投げます。 - 適用可能であれば、 tie() されている出力ストリームをフラッシュします。
- この入力ストリームに
ios_base::skipwsフラグがセットされている場合、以下のいずれかが真になるまで入力ストリームから文字を抽出して破棄します。
- 入力ストリームの次の利用可能な文字が、このストリームに現在設定されているロケールの std::ctype ファセットによって判定されるところによれば、ホワイトスペース文字でない。 非ホワイトスペース文字は抽出されません。
- ストリームの終端に達した。 この場合、
failbitとeofbitがセットされ、さらにこれらのビットのいずれかに対する例外が有効な場合、 ios_base::failure が投げられます。
- 入力ストリームに eofbit または badbit がセットされている場合、
sentry::operator bool()を呼んだかのように sentry の状態を確認します。 これは basic_ios::good と同等です。- sentry が
falseを返した、または sentry のコンストラクタが例外を投げた場合、入力は行われません。 - sentry が
trueを返した場合、rdbuf()->sbumpc()またはrdbuf()->sgetc()を呼んだかのように入力が行われます。
- ストリームの終端に達した (
rdbuf()->sbumpc()またはrdbuf()->sgetc()の呼び出しがTraits::eof()を返した) 場合、eofbitをセットします。 このストリームの例外マスクで eofbit に対する例外が有効な場合、 ios_base::failure を投げます。 - 入力中に例外が投げられた場合、入力ストリームの
badbitをセットします。 このストリームの例外マスクで badbit に対する例外が有効な場合、その例外が投げ直されます。 - 例外が投げられなかった場合、
*thisを返します。
- ストリームの終端に達した (
- いかなる出来事が発生しても、例外によって終了したか戻ったかにかかわらず、この関数を抜ける前に sentry のデストラクタが呼ばれます。
標準ライブラリ
以下の標準ライブラリの関数は FormattedInputFunction です。