命名空间
变体
操作

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

来自 cppreference.cn
< 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) 调用方请求将获取区回退一个字符(以无参数或以 Traits::eof() 为参数调用 pbackfail()
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,除非 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> 的公开成员函数) [编辑]