名前空間
変種
操作

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

From cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
 
 
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 area)を1文字分戻すことを要求している場合(pbackfail() が引数なしで呼び出された場合)、この関数は1バイト前の位置からファイルを再読み取りし、basic_streambuf::gptr() をデクリメントします。これは、たとえば gbump(-1) を呼び出すことによって行われます。
2) コール元は、以前取得した文字とは異なる文字をアンバックしようとしています (pbackfail() がアンバックする必要のある文字を引数として呼び出された場合)。その場合、
a) まず、プットバック位置(putback position)が存在するかどうかを確認します。存在しない場合は、ファイルを1バイト前の位置から再読み取りすることによって、読み取り領域を戻します。
a) 次に、プットバック位置にある文字を確認します。その文字が既に c と等しい場合(Traits::eq(to_char_type(c), gptr()[-1]) によって判断)、basic_streambuf::gptr() をデクリメントするだけです。
b) それ以外の場合、バッファが自身の読み取り領域を変更することが許可されていれば、basic_streambuf::gptr() をデクリメントし、調整後の gptr() が指す位置に c を書き込みます。

この関数はファイルを変更することはなく、インメモリバッファの読み取り領域のみを変更します。

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

目次

[編集] パラメータ

c - 戻される文字、または読み取り領域のバックアップが要求されていることを示す 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 日本語 中文(简体) 中文(繁體)