std::strstreambuf::pbackfail
From cppreference.com
< cpp | io | strstreambuf
| protected: virtual int_type pbackfail( int_type c = EOF ); |
(C++98で非推奨) (C++26で削除) |
|
このprotected virtual関数は、public関数であるbasic_streambuf::sungetc および basic_streambuf::sputbackc (これらはさらに basic_istream::unget および basic_istream::putback から呼び出されます) によって呼び出されます。
1) 呼び出し元が1文字だけ後退させることを要求している場合(`pbackfail()` が引数なしで、または `EOF` を引数として呼び出された場合)
a) まず、アンバック位置が存在するかどうかを確認し、存在しない場合は失敗します(`strstreambuf` は再読み込みできる外部文字ソースを持ちません)。
b) 呼び出し元が間違っており、実際にはアンバック位置が利用可能な場合、単に `basic_streambuf::gptr()` をデクリメントします。例えば、`gbump(-1)` を呼び出すことによって行われます。
2) コール元は、以前取得した文字とは異なる文字をアンバックしようとしています (
pbackfail() がアンバックする必要のある文字を引数として呼び出された場合)。その場合、a) まず、アンバック位置が存在するかどうかを確認し、存在しない場合は失敗します。
b) 次に、アンバック位置にある文字を確認します。その位置にある文字が既に `(char)c` と等しい場合、単に `basic_streambuf::gptr()` をデクリメントします。
c) それ以外の場合、バッファが変更不可能であれば(この `strstreambuf` が文字列リテラルまたはその他の `const` 配列で構築された場合)、失敗します。
d) それ以外の場合、`basic_streambuf::gptr()` をデクリメントし、調整後に `gptr()` が指す位置に `c` を書き込みます。
目次 |
[編集] パラメータ
| c | - | アンバックする文字、または取得領域の後退が要求されていることを示す `Traits::eof()` |
[編集] 戻り値
成功した場合は `c`。ただし、`c` が `EOF` であった場合は、`EOF` 以外の未指定の値が返されます。
失敗した場合は `EOF`。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| [virtual] |
入力シーケンスに1文字を戻す (入力シーケンスを変更する可能性あり) ( std::basic_streambuf<CharT,Traits> の仮想 protected メンバ関数) |
| 入力シーケンスの次のポインタを1つ戻す ( std::basic_streambuf<CharT,Traits> の public メンバ関数) | |
| 1文字を入力シーケンスに戻す ( std::basic_streambuf<CharT,Traits> の public メンバ関数) | |
| 文字を非抽出する (un-extract) ( std::basic_istream<CharT,Traits> の public メンバ関数) | |
| 文字を入力ストリームに戻す ( std::basic_istream<CharT,Traits> の public メンバ関数) |