std::basic_stringbuf<CharT,Traits,Allocator>::pbackfail
提供: cppreference.com
< cpp | io | basic stringbuf
protected: virtual int_type pbackfail( int_type c = Traits::eof() ) |
||
この protected virtual 関数は public 関数 basic_streambuf::sungetc および basic_streambuf::sputbackc によって呼ばれます (そしてそれらは basic_istream::unget および basic_istream::putback によって呼ばれます)。
1) 呼び出し元は get 領域を1文字後退させることを要求しています (
pbackfail()
は引数なしまたは Traits::eof() を引数として呼ばれます)。a) まず putback 位置が存在するかどうか調べ、本当に存在しなければ、失敗します (stringbuf には読み直す外部の文字シーケンスがありません)。
b) 呼び出し元が間違っており、 putback 位置が実際には利用可能であれば、単純に basic_streambuf::gptr() をデクリメントします (gbump(-1) を呼ぶなどによって)。
2) 呼び出し元は以前取得した文字と異なる文字の putback を試みます (
pbackfail()
は戻す必要のある文字を指定して呼ばれます)。 この場合、a) まず putback 位置が存在するかどうか調べ、存在しなければ、失敗します。
b) その後、何の文字が putback 位置にあるかを調べます。 そこに保持されている文字がすでに
c
と等しければ (Traits::eq(to_char_type(c), gptr()[-1]) によって行われたかのように判定されます)、単純に basic_streambuf::gptr() をデクリメントします。c) そうでなく、バッファが読み込み専用に開かれていれば、失敗します。
d) そうでなく、バッファが書き込み用に開かれていれば (mode && std::ios_base::out が非ゼロ)、 basic_streambuf::gptr() をデクリメントし、その調節後の gptr() の指す位置に
c
を書き込みます。目次 |
[編集] 引数
c | - | 戻す文字、または get 領域の後退が要求されることを示す Traits::eof() |
[編集] 戻り値
成功した場合は c、ただし c
が Traits::eof() の場合は Traits::not_eof(c) が返されます。
失敗した場合は Traits::eof()。
[編集] 例
This section is incomplete Reason: no example |
[編集] 関連項目
[仮想] |
入力シーケンスに文字を戻します。 入力シーケンスを変更する可能性があります ( std::basic_streambuf<CharT,Traits> の仮想プロテクテッドメンバ関数)
|
入力シーケンスの次ポインタを1つ前に移動させます ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数)
| |
入力シーケンスに文字をひとつ戻します ( std::basic_streambuf<CharT,Traits> のパブリックメンバ関数)
| |
文字の抽出を取り消します ( std::basic_istream<CharT,Traits> のパブリックメンバ関数)
| |
入力ストリームに文字を戻します ( std::basic_istream<CharT,Traits> のパブリックメンバ関数)
|