Namespaces
Variants

C++ named requirements: FormattedInputFunction

From cppreference.net
C++ named requirements

要件

FormattedInputFunction は、以下の処理を実行するストリーム入力関数です:

  • basic_istream::sentry 型のオブジェクトを自動記憶域期間で構築し、 noskipws 引数を false に設定して、以下の処理を実行します:
  • 入力ストリームで eofbit または badbit が設定されている場合、 failbit も設定し、この入力ストリームの 例外マスク failbit に対する例外が有効になっている場合 ( ( exceptions ( ) & failbit ) ! = 0 )、 ios_base::failure をスローします。
  • 該当する場合、tie()された出力ストリームをフラッシュします。
  • この入力ストリームで ios_base::skipws フラグが設定されている場合、以下のいずれかが真になるまで入力ストリームから文字を抽出して破棄します:
  • 入力ストリームの次の利用可能な文字が、この入力ストリームに現在組み込まれているロケールの std::ctype ファセットによってテストされる空白文字でない場合。非空白文字は抽出されません。
  • ストリームの終端に達した場合、この場合 failbit eofbit が設定され、これらのビットのいずれかに対する例外が有効になっている場合、 ios_base::failure がスローされます。
  • sentry::operator bool() を呼び出してセントリーの状態をチェックします。これは basic_ios::good と同等です。
  • セントリーが false を返した場合、またはセントリーのコンストラクタが例外をスローした場合、入力は行われません。
  • セントリーが true を返した場合、 rdbuf ( ) - > sbumpc ( ) または rdbuf ( ) - > sgetc ( ) を呼び出すかのように入力を行います。
  • ストリームの終端に達した場合( rdbuf ( ) - > sbumpc ( ) または rdbuf ( ) - > sgetc ( ) Traits :: eof ( ) を返す)、 eofbit を設定する。このストリームの 例外マスク eofbit に対する例外が有効な場合( ( exceptions ( ) & eofbit ) ! = 0 )、 ios_base::failure をスローする。
  • 入力中に例外が発生した場合、入力ストリームに badbit を設定する。このストリームの 例外マスク badbit に対する例外が有効な場合( ( exceptions ( ) & badbit ) ! = 0 )、例外は再スローされる。
  • 例外がスローされなかった場合、 * this を返す。
  • いずれの場合も、例外による終了か戻り値による終了かを問わず、セントリーのデストラクタはこの関数を抜ける前に呼び出されます。

標準ライブラリ

以下の標準ライブラリ関数は FormattedInputFunction s です。

不具合報告

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

DR 適用対象 公開時の動作 正しい動作
LWG 160 C++98 キャッチされた例外が再スローされるかどうかを
決定するプロセスで、存在しない関数 exception() が言及されていた
exceptions() に修正