名稱空間
變體
操作

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::ungetbasic_istream::putback 呼叫)在以下情況呼叫:

1) 獲取區中沒有放回位置(無引數地呼叫 pbackfail())。此情況下,pbackfail() 的目的是將獲取區後備一個字元,若關聯的字元序列允許(例如,檔案支援的 streambuf 可能會從檔案過載緩衝區,提早一個字元開始)。
2) 呼叫方試圖放回一個不同於先前取走的字元(呼叫 pbackfail() 時,附帶需要放回的字元)。此情況下,pbackfail() 的目的是將字元 c 放置到緊鄰 basic_streambuf::gptr() 前的位置,並且如果可能,修改關聯的字元序列以反映此更改。這可能涉及如第一種情況中那樣後備獲取區。

此函式的預設基類版本不做任何事,並在所有情況下返回 Traits::eof()。此函式被派生類: basic_stringbuf::pbackfailbasic_filebuf::pbackfailstrstreambuf::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 的虛保護成員函式) [編輯]
將輸入序列中的下一個指標後退一個位置
(公開成員函式) [編輯]
將一個字元放回輸入序列
(公開成員函式) [編輯]