名前空間
変種
操作

std::basic_stringbuf::pbackfail

提供: cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
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、ただし cTraits::eof() の場合は Traits::not_eof(c) が返されます。

失敗した場合は Traits::eof()

[編集]

[編集] 関連項目

[仮想]
入力シーケンスに文字を戻します。 入力シーケンスを変更する可能性があります
(std::basic_streambufの仮想プロテクテッドメンバ関数) [edit]
入力シーケンスの次ポインタを1つ前に移動させます
(std::basic_streambufのパブリックメンバ関数) [edit]
入力シーケンスに文字をひとつ戻します
(std::basic_streambufのパブリックメンバ関数) [edit]
文字の抽出を取り消します
(std::basic_istreamのパブリックメンバ関数) [edit]
入力ストリームに文字を戻します
(std::basic_istreamのパブリックメンバ関数) [edit]