std::basic_streambuf<CharT,Traits>::pbackfail
From cppreference.com
< cpp | io | basic streambuf
| protected: virtual int_type pbackfail( int_type c = Traits::eof() ); |
||
この関数は、以下のいずれかの条件が満たされている場合にのみ呼び出すことができます。
- gptr() が null である、
- 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、およびユーザー定義およびサードパーティライブラリのストリームクラスによってオーバーライドされることが期待されます。
目次 |
[編集] パラメータ
| 文字 | - | アンバイトする文字、またはアンバイトのみが要求された場合は Traits::eof() |
[編集] 戻り値
失敗した場合は Traits::eof()、成功を示すその他の値。基底クラスバージョンは常に失敗します。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 32 | C++98 | 呼び出し条件 'traits::eq(*gptr(),traits::to_char_type(c)) returns false' は sputbackc() の説明と一致しませんでした。 |
説明と一致するように修正されました。 説明 |
[編集] 関連項目
| [virtual] |
入力シーケンスを後退させて文字をアンバイトします。関連ファイルには影響しません。 ( std::basic_filebuf<CharT,Traits> の仮想保護メンバー関数) |
| [virtual] |
入力シーケンスに文字をアンバイトします。 ( std::basic_stringbuf<CharT,Traits,Allocator> の仮想保護メンバー関数) |
| [virtual] |
入力シーケンスを後退させて文字をアンバイトします。 ( std::strstreambuf の仮想保護メンバー関数) |
| 入力シーケンスの次のポインタを1つ戻す (public member function) | |
| 1文字を入力シーケンスに戻す (public member function) |