命名空间
变体
操作

std::basic_stringbuf<CharT,Traits,Allocator>::pbackfail

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

此受保护的虚函数由公共函数 basic_streambuf::sungetcbasic_streambuf::sputbackc(反过来由 basic_istream::ungetbasic_istream::putback 调用)调用。

1) 调用者请求将获取区域后退一个字符(pbackfail() 不带参数或带有 Traits::eof() 作为参数调用)。
a) 首先,检查是否有回退位置,如果确实没有,则失败。(stringbuf 没有要重新读取的外部字符源)。
b) 如果调用者错了,并且回退位置实际上可用,则只需递减 basic_streambuf::gptr(),例如通过调用 gbump(-1)
2) 调用者尝试将与之前检索到的字符不同的字符放回(pbackfail() 被调用,传入需要放回的字符),在这种情况下
a) 首先,检查是否有回退位置,如果确实没有,则失败。
b) 然后检查回退位置中的字符。如果该位置保存的字符已经等于 c(由 Traits::eq(to_char_type(c), gptr()[-1]) 确定),则只需递减 basic_streambuf::gptr()
c) 否则,如果缓冲区仅对读取开放,则失败。
d) 否则,如果缓冲区对写入开放(mode && std::ios_base::out 非零),则递减 basic_streambuf::gptr() 并将 c 写入调整后的 gptr() 指向的位置。

内容

[编辑] 参数

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