std::basic_filebuf<CharT,Traits>::pbackfail
来自 cppreference.cn
< 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> 的公共成员函数) |