名前空間
変種
操作

std::basic_stringbuf<CharT,Traits,Allocator>::pbackfail

From 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) まず、アンバック位置があるかどうかを確認します。もし本当にない場合は失敗します。(stringbuf は、外部の文字ソースを再読み込みできないため)
b) コール元が間違っていて、実際にはアンバック位置が利用可能な場合、単に basic_streambuf::gptr() をデクリメントします。例: gbump(-1) を呼び出す。
2) コール元は、以前取得した文字とは異なる文字をアンバックしようとしています (pbackfail() がアンバックする必要のある文字を引数として呼び出された場合)。その場合、
a) まず、アンバック位置があるかどうかを確認します。もしない場合は失敗します。
b) 次に、アンバック位置にある文字を確認します。もしその位置にある文字がすでに 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()

[編集]

[編集] 関連項目

[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 メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)