命名空间
变体
操作

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> 的公共成员函数) [编辑]