名稱空間
變體
操作

std::basic_filebuf<CharT,Traits>::pbackfail

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

此受保護的虛擬函式由公共函式 basic_streambuf::sungetcbasic_streambuf::sputbackc 呼叫(後者又由 basic_istream::ungetbasic_istream::putback 呼叫)。

1) 呼叫者請求將獲取區域向後回退一個字元(不帶引數呼叫 pbackfail()),在這種情況下,此函式重新讀取檔案,從前一個位元組開始,並遞減 basic_streambuf::gptr(),例如透過呼叫 gbump(-1)
2) 呼叫方試圖放回與之前取得的字元不同的字元(以需要放回的字元為引數呼叫 pbackfail()),這種情況下
a) 首先,檢查是否存在回退位置,如果不存在,則透過重新讀取檔案並從前一個位元組開始,將獲取區域回退。
a) 然後檢查回退位置的字元。如果該字元已經等於 c,由 Traits::eq(to_char_type(c), gptr()[-1]) 確定,則簡單地遞減 basic_streambuf::gptr()
b) 否則,如果允許緩衝區修改其自身的獲取區域,則遞減 basic_streambuf::gptr() 並將 c 寫入調整後 gptr() 指向的位置。

此函式從不修改檔案,只修改記憶體緩衝區的獲取區域。

如果檔案未開啟(is_open()==false),此函式立即返回 Traits::eof()

目錄

[編輯] 引數

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> 的公共成員函式) [編輯]
English 日本語 中文(简体) 中文(繁體)