名前空間
変種
操作

std::basic_filebuf<CharT,Traits>::pbackfail

提供: cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
入出力ライブラリ
入出力マニピュレータ
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() が引数なしで呼ばれます)。 この場合、この関数は1文字前の位置からファイルを読み直し、 basic_streambuf::gptr() をデクリメント (例えば gbump(-1) を呼ぶことによって) します。
2) 呼び出し元は以前取得したものと異なる文字を戻そうと試みています (pbackfail() が戻す必要のある文字を指定して呼ばれます)。 この場合、
a) まず、 putback 位置が存在するかどうか調べ、存在しない場合は、ファイルを1文字前の位置から読み直すことによって get 領域を後退させます。
b) その後、 putback 位置の文字を調べます。 保持されている文字がすでに c と等しい (Traits::eq(to_char_type(c), gptr()[-1]) によって判定されます) 場合は、単純に basic_streambuf::gptr() をデクリメントします。
c) そうでなく、バッファがその独自の get 領域を変更することが許されていれば、 basic_streambuf::gptr() をデクリメントし、調節後の gptr() の指す位置に c を書き込みます。

この関数はファイルを変更することはありません。 インメモリバッファの get 領域を変更するだけです。

ファイルが開かれていない場合 (is_open()==false)、この関数は直ちに Traits::eof() を返します。

目次

[編集] 引数

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

[編集] 戻り値

成功した場合は c、ただし cTraits::eof() であった場合は Traits::not_eof(c) が返されます。

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

[編集]

[編集] 関連項目

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