C++ named requirements: FormattedInputFunction
From cppreference.net
要件
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 がスローされます。
-
入力ストリームで
eofbit
または
badbit
が設定されている場合、
-
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 を返す。
-
ストリームの終端に達した場合(
rdbuf
(
)
-
>
sbumpc
(
)
または
rdbuf
(
)
-
>
sgetc
(
)
が
Traits
::
eof
(
)
を返す)、
- いずれの場合も、例外による終了か戻り値による終了かを問わず、セントリーのデストラクタはこの関数を抜ける前に呼び出されます。
標準ライブラリ
以下の標準ライブラリ関数は FormattedInputFunction s です。
- basic_istream::operator>> (int, long, double, void*, bool)
- operator>> (std::basic_istream, char&)
- operator>> (std::basic_istream, char*)
- operator>> (std::basic_istream, std::bitset)
- operator>> (std::basic_istream, std::string)
-
operator>>、 std::get_money の戻り値に対して呼び出された場合
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 160 | C++98 |
キャッチされた例外が再スローされるかどうかを
決定するプロセスで、存在しない関数
exception()
が言及されていた
|
exceptions() に修正 |