名稱空間
變體
操作

std::strstreambuf::pbackfail

來自 cppreference.com
< cpp‎ | io‎ | strstreambuf
protected:
virtual int_type pbackfail( int_type c = EOF );
(C++98 起棄用)
(C++26 中移除)

此受保護的虛擬函式由公共函式 basic_streambuf::sungetcbasic_streambuf::sputbackc 呼叫(反過來,它們由 basic_istream::ungetbasic_istream::putback 呼叫)。

1) 呼叫者請求將獲取區域向後移動一個字元(pbackfail() 在沒有引數或以 EOF 作為引數的情況下被呼叫)
a) 首先,檢查是否存在回退位置,如果確實不存在,則失敗(strstreambuf 沒有外部字元源可供重新讀取)。
b) 如果呼叫者錯了,並且回退位置確實可用,則簡單地遞減 basic_streambuf::gptr(),例如透過呼叫 gbump(-1)
2) 呼叫方試圖放回與之前取得的字元不同的字元(以需要放回的字元為引數呼叫 pbackfail()),這種情況下
a) 首先,檢查是否存在回退位置,如果不存在,則失敗。
b) 然後檢查回退位置的字元。如果該位置的字元已經等於 (char)c,則簡單地遞減 basic_streambuf::gptr()
c) 否則,如果緩衝區不可修改(此 strstreambuf 是用字串字面量或其他 const 陣列構造的),則失敗。
d) 否則,遞減 basic_streambuf::gptr(),並將 c 寫入調整後 gptr() 指向的位置。

目錄

[編輯] 引數

c - 要放回的字元,或 Traits::eof() 以指示請求將獲取區域向後移動

[編輯] 返回值

成功時返回 c,但如果 cEOF,則返回除 EOF 之外的未指定值。

失敗時返回 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> 的公共成員函式) [編輯]