名前空間
変種
操作

C++ 名前付き要件: UnformattedInputFunction

From cppreference.com
 
 
C++ 名前付き要件
 

[編集] 要件

UnformattedInputFunction は、以下の操作を実行するストリーム入力関数です。

1) noskipws 引数を true に設定して、自動記憶域期間を持つ basic_istream::sentry 型のオブジェクトを構築します。これは以下の操作を実行します。
  • 入力ストリームで eofbit または badbit が設定されている場合、failbit も設定します。また、この入力ストリームの 例外マスクfailbit に対する例外が有効になっている場合((exceptions() & failbit) != 0)、ios_base::failure をスローします。
  • 適用される場合、tie() されている出力ストリームをフラッシュします。
2) sentry::operator bool() を呼び出して sentry の状態を確認します。これは basic_ios::good と同等です。
  • 演算子が false を返す場合、または sentry オブジェクトの構築が失敗した場合
  • 入力ストリームで抽出された文字数(gcount)をゼロに設定します。
  • 関数が CharT の配列への書き込みのために呼び出された場合、配列の最初の位置に CharT()(ヌル文字)を書き込みます。
  • 演算子が true を返す場合、rdbuf()->sbumpc() または rdbuf()->sgetc() を呼び出すかのように入力を実行します。
  • ストリームの終端に達した場合(rdbuf()->sbumpc() または rdbuf()->sgetc() の呼び出しが Traits::eof() を返す場合)、eofbit を設定します。このストリームの 例外マスクeofbit に対する例外が有効になっている場合((exceptions() & eofbit) != 0)、ios_base::failure をスローします。
  • 入力中に例外がスローされた場合、入力ストリームに badbit を設定します。このストリームの 例外マスクbadbit に対する例外が有効になっている場合((exceptions() & badbit) != 0)、例外も再スローされます。
  • basic_ios::clear からスローされた例外はキャッチまたは再スローされません。
  • 入力中に例外がスローされなかった場合、入力ストリームで抽出された文字数(gcount)を設定します。
3) 例外による終了か戻りかに関わらず、この関数を離れる前に、常に sentry のデストラクタが呼び出されます。

[編集] 標準ライブラリ

以下の標準ライブラリ関数は、**UnformattedInputFunction** です。

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 61 C++98 eofbit および/または failbit の設定によって例外がスローされる場合に、badbit が設定されるかどうかは不明確でした。
eofbit および/または failbit の設定によって例外がスローされる場合に、badbit が設定されるかどうか
basic_ios::clear からスローされた例外
はキャッチまたは再スローされません。
LWG 160 C++98 キャッチされた例外が
再スローされるかどうかを決定するプロセスで、存在しない関数 `exception()` に言及していましたが、
exceptions() に修正されました。
LWG 243 C++98 sentry::operator bool() が false を返す場合、または sentry オブジェクトの構築が失敗した場合の動作
は規定されていませんでした。
指定された
English 日本語 中文(简体) 中文(繁體)