std::basic_stringbuf<CharT,Traits,Allocator>::pbackfail

從 cppreference.com
< cpp‎ | io‎ | basic stringbuf
 
 
 
 
protected:
virtual int_type pbackfail( int_type c = Traits::eof() )

此受保護虛函數為公開函數 basic_streambuf::sungetcbasic_streambuf::sputbackc 所調用(轉而為 basic_istream::ungetbasic_istream::putback 所調用)。

1) 調用方要求獲取區後備一個字符(以無實參或以 Traits::eof() 為實參調用 pbackfail()
a) 首先,檢查是否有回放位置,而若確實無回放位置則失敗( stringbuf 無重讀用的外部字符序列)
b) 若調用方錯誤而回放位置實際上可用,則簡單地自減 basic_streambuf::gptr(),例如以調用 gbump(-1)
2) 調用方試圖回放的字符異於之前取得者(以要需要放回的字符調用 pbackfail()),該情況下
a) 首先,檢查是否有回放位置,若無則失敗。
b) 然後檢查會放位置中有什麼字符。若其處保有的字符已等於 c,以 Traits::eq(to_char_type(c), gptr()[-1]) 確定,則簡單地自減 basic_streambuf::gptr()
c) 否則,若緩衝區僅為讀取打開,則失敗。
d) 否則,若緩衝區為寫入打開( mode && std::ios_base::out 非零),則自減 basic_streambuf::gptr() 並寫入 c 到調整後的 gptr() 所指向的位置。

目錄

[編輯] 參數

c - 要返回的字符,或若要求指示獲取區的後備則為 Traits::eof()

[編輯] 返回值

成功時為 c,除非 cTraits::eof(),該情況下返回 Traits::not_eof(c)

失敗時為 Traits::eof()

[編輯] 示例

[編輯] 參閱

將字符放回輸入序列,可能修改輸入序列
(std::basic_streambuf<CharT,Traits> 的虛受保護成員函數) [編輯]
回移一位輸出序列中的下一位置指針
(std::basic_streambuf<CharT,Traits> 的公開成員函數) [編輯]
在輸入序列中放回一個字符
(std::basic_streambuf<CharT,Traits> 的公開成員函數) [編輯]
撤銷上一個字符的提取
(std::basic_istream<CharT,Traits> 的公開成員函數) [編輯]
往輸入流中放置一個字符
(std::basic_istream<CharT,Traits> 的公開成員函數) [編輯]