std::basic_streambuf<CharT,Traits>::pbackfail
來自 cppreference.com
< cpp | io | basic streambuf
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 可能會從檔案過載緩衝區,提早一個字元開始)。2) 呼叫方試圖放回一個不同於先前取走的字元(呼叫
pbackfail()
時,附帶需要放回的字元)。此情況下,pbackfail()
的目的是將字元 c
放置到緊鄰 basic_streambuf::gptr() 前的位置,並且如果可能,修改關聯的字元序列以反映此更改。這可能涉及如第一種情況中那樣後備獲取區。此函式的預設基類版本不做任何事,並在所有情況下返回 Traits::eof()。此函式被派生類: basic_stringbuf::pbackfail、basic_filebuf::pbackfail、strstreambuf::pbackfail 所過載,並預期被使用者定義和第三方庫的流類所過載。
目錄 |
[編輯] 引數
ch | - | 要放回的字元,或在只請求退回時為 Traits::eof() |
[編輯] 返回值
失敗時為 Traits::eof(),其他某個值指示成功。基類版本總是失敗。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 32 | C++98 | 呼叫條件 'traits::eq(*gptr(),traits::to_char_type(c)) 返回 false' 與 sputbackc() 的描述不匹配 |
已更正以匹配 描述 |
[編輯] 參閱
[虛] |
退回輸入序列以歸還一個字元,不影響關聯檔案 ( std::basic_filebuf<CharT,Traits> 的虛保護成員函式) |
[虛] |
放回一個字元到輸入序列 ( std::basic_stringbuf<CharT,Traits,Allocator> 的虛保護成員函式) |
[虛] |
退回輸入序列以歸還一個字元 ( std::strstreambuf 的虛保護成員函式) |
將輸入序列中的下一個指標後退一個位置 (公開成員函式) | |
將一個字元放回輸入序列 (公開成員函式) |