std::basic_filebuf<CharT,Traits>::pbackfail
來自 cppreference.com
< cpp | io | basic filebuf
| protected: virtual int_type pbackfail( int_type c = Traits::eof() ) |
||
此受保護的虛擬函式由公共函式 basic_streambuf::sungetc 和 basic_streambuf::sputbackc 呼叫(後者又由 basic_istream::unget 和 basic_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()。此函式從不修改檔案,只修改記憶體緩衝區的獲取區域。
如果檔案未開啟(is_open()==false),此函式立即返回 Traits::eof()。
目錄 |
[編輯] 引數
| c | - | 要回退的字元,或 Traits::eof() 以指示請求回退獲取區域 |
[編輯] 返回值
成功時返回 c,除非 c 是 Traits::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> 的公共成員函式) |