名前空間
変種
操作

std::strstreambuf::pbackfail

提供: cppreference.com
< cpp‎ | io‎ | strstreambuf
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
protected:
virtual int_type pbackfail( int_type c = EOF );

このプロテクテッド仮想関数はパブリック関数 basic_streambuf::sungetc および basic_streambuf::sputbackc によって呼ばれます (そしてそれは basic_istream::unget および basic_istream::putback によって呼ばれます)。

1) 呼び出し元は get 領域を1文字後退させることを要求しています (pbackfail() が引数なしで、または EOF を引数として呼ばれます)。
a) まず、 putback 位置が存在するかどうか調べ、それが実際には存在しない場合は、失敗します (strstreambuf は読み直す外部文字ソースを持ちません)。
b) 呼び出し元が間違っており、 putback 位置が実際には利用可能な場合は、例えば gbump(-1) を呼ぶことによって、単純にbasic_streambuf::gptr() をデクリメントします。
2) 呼び出し元は以前取得した文字と異なる文字の putback を試みます (pbackfail() は戻す必要のある文字を指定して呼ばれます)。 この場合、
a) まず、 putback 位置が存在するかどうか調べ、存在しない場合は、失敗します。
b) その後、 putback 位置に何の文字があるかを調べます。 そこに保持されている文字がすでに (char)c と等しい場合は、単純に basic_streambuf::gptr() をデクリメントします。
c) そうでなく、バッファが変更不可能 (この strstreambuf が文字列リテラルや他の何らかの const から構築された) な場合は、失敗します。
d) そうでなければ、 basic_streambuf::gptr() をデクリメントし、調節後の gptr() の指す位置に c を書き込みます。

目次

[編集] 引数

c - 戻す文字、または get 領域の後退が要求されたことを示す Traits::eof()

[編集] 戻り値

成功した場合は c、ただし cEOF であった場合は EOF 以外の未規定の値が返されます。

失敗した場合は EOF

[編集]

[編集] 関連項目

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