Namespaces
Variants

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

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = Traits :: eof ( ) ) ;

この関数は、以下のいずれかの条件が満たされている場合にのみ呼び出すことができます:

  • gptr ( ) ヌル である場合、
  • gptr ( ) == eback ( ) である場合、または
  • traits :: eq ( traits :: to_char_type ( c ) , gptr ( ) [ - 1 ] ) false を返す場合。

この関数は、以下のいずれかの場合に、公開関数 sungetc() および sputbackc() (これらはさらに basic_istream::unget および basic_istream::putback から呼び出されます)によって呼び出されます:

1) 取得領域にプットバック位置が存在しない場合(引数なしで pbackfail() が呼び出される)。この状況では、 pbackfail() の目的は、関連する文字シーケンスがこれを許可する場合(例えば、ファイルバックアップされたstreambufがファイルから1文字早く開始してバッファを再読み込みする場合)、取得領域を1文字分戻すことです。
2) 呼び出し元が、以前に取得した文字とは異なる文字をプットバックしようとする場合( pbackfail() がプットバックする必要のある文字と共に呼び出される)。この状況では、 pbackfail() の目的は、文字 c basic_streambuf::gptr() の直前に位置する取得領域に配置し、可能であればこの変更を反映するために関連する文字シーケンスを修正することである。これには、最初のバリエーションと同様に取得領域をバックアップすることが含まれる場合がある。

この関数のデフォルト基底クラスバージョンは何も行わず、すべての状況で Traits :: eof ( ) を返します。この関数は派生クラスによってオーバーライドされます: basic_stringbuf::pbackfail basic_filebuf::pbackfail strstreambuf::pbackfail 。また、ユーザー定義およびサードパーティライブラリのストリームクラスによってオーバーライドされることが期待されています。

目次

パラメータ

ch - 戻す文字、またはバックアウトのみが要求されている場合は Traits :: eof ( )

戻り値

Traits :: eof ( ) 失敗の場合には、成功を示す他の値。基底クラスのバージョンは常に失敗します。

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 32 C++98 呼び出し条件 ' traits :: eq ( * gptr ( ) ,traits :: to_char_type ( c ) )
false を返す' という記述が sputbackc() の説明と一致していなかった
説明と一致するように修正
された

関連項目

[virtual]
入力シーケンスをバックアウトして文字をアンゲットし、関連付けられたファイルに影響を与えない
( std::basic_filebuf<CharT,Traits> の仮想保護メンバ関数)
[virtual]
入力シーケンスに文字を戻す
( std::basic_stringbuf<CharT,Traits,Allocator> の仮想保護メンバ関数)
[virtual]
入力シーケンスをバックアウトして文字をアンゲットする
( std::strstreambuf の仮想保護メンバ関数)
入力シーケンスの次のポインタを1つ戻す
(公開メンバ関数)
入力シーケンスに1文字を戻す
(公開メンバ関数)