名前付き要件:UnformattedInputFunction
提供: cppreference.com
[編集]要件
UnformattedInputFunction は以下の動作を行うストリーム入力関数です。
- 自動記憶域期間を持つ basic_istream::sentry 型のオブジェクトを
noskipws
引数を true に設定して構築します。 これは以下の動作を行います。
- 入力ストリームに eofbit または badbit がセットされている場合、
failbit
も同様にセットし、さらに、この入力ストリームの例外マスクで failbit に対する例外が有効な場合、 ios_base::failure を投げます。 - 適用可能であれば、 tie() されている出力ストリームをフラッシュします。
- 入力ストリームに eofbit または badbit がセットされている場合、
sentry::operator bool()
を呼ぶことによって sentry オブジェクトの状態を確認します。 これは basic_ios::good と同等です。- sentry が false を返した場合、または sentry のコンストラクタが例外を投げた場合、
- 入力ストリームの抽出された文字数 (gcount) をゼロに設定します。
- 関数が
CharT
の配列に書き込むために呼ばれた場合、その配列の最初の位置にCharT()
(ヌル文字) を書き込みます。
- sentry が true を返した場合、 rdbuf()->sbumpc() または rdbuf()->sgetc() を呼んだかのように入力を行います。
- ストリームの終端に達した (rdbuf()->sbumpc() または rdbuf()->sgetc() が Traits::eof() を返した) 場合、
eofbit
をセットします。 この入力ストリームの例外マスクで eofbit に対する例外が有効な場合、 ios_base::failure を投げます。 - 入力中に例外が投げられた場合、入力ストリームに
badbit
をセットします。 この入力ストリームの例外マスクで badbit に対する例外が有効な場合、その例外が投げ直されます。 - 入力中に例外が投げられなかった場合、入力ストリームの抽出された文字数 (gcount) を設定します。
- ストリームの終端に達した (rdbuf()->sbumpc() または rdbuf()->sgetc() が Traits::eof() を返した) 場合、
- いかなる出来事が発生しても、例外によって終了したか戻ったかにかかわらず、この関数を抜ける前に sentry のデストラクタが呼ばれます。
[編集]標準ライブラリ
以下の標準ライブラリの関数は UnformattedInputFunction です。
- std::getline (ただし gcount は変更しません)
- basic_istream::operator>>(basic_streambuf*)
- basic_istream::get
- basic_istream::getline
- basic_istream::ignore
- basic_istream::peek
- basic_istream::read
- basic_istream::readsome
- basic_istream::putback (ただし最初に
eofbit
をクリアします) - basic_istream::unget (ただし最初に
eofbit
をクリアします) - basic_istream::sync (ただし gcount は変更しません)
- basic_istream::tellg (ただし gcount は変更しません)
- basic_istream::seekg (ただし最初に
eofbit
をクリアし、 gcount は変更しません) - std::ws (ただし gcount は変更しません)