Namespaces
Variants

std::strstreambuf:: pbackfail

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = EOF ) ;
(C++98 中已弃用)
(C++26 中移除)

此受保护的虚函数由公共函数 basic_streambuf::sungetc basic_streambuf::sputbackc 调用(这两个函数又分别被 basic_istream::unget basic_istream::putback 调用)。

1) 调用者请求获取区域由一个字符提供回退支持(调用 pbackfail() 时不带参数或传入 EOF 作为参数)
a) 首先检查是否存在回退位置,如果确实不存在,则操作失败( strstreambuf 没有可供重新读取的外部字符源)。
b) 若调用方判断错误且回放位置实际可用时,只需递减 basic_streambuf::gptr() ,例如通过调用 gbump ( - 1 ) 实现。
2) 调用方尝试回放一个与先前读取字符不同的字符(此时会调用 pbackfail() 并传入需要回放的字符),在这种情况下
a) 首先,检查是否存在回退位置,若不存在则操作失败。
b) 随后检查回退位置中的字符。若该位置已持有的字符等于 ( char ) c ,则直接递减 basic_streambuf::gptr()
c) 否则,若缓冲区不可修改(此 strstreambuf 是使用字符串字面量或其他 const 数组构造的),则失败。
d) 否则,递减 basic_streambuf::gptr() 并将 c 写入调整后 gptr ( ) 所指向的位置。

目录

参数

c - 要回退的字符,或 Traits :: eof ( ) 以表示请求回退获取区域

返回值

c 在成功时返回,除非 c EOF ,此时将返回除 EOF 外的未指定值。

EOF 表示操作失败。

示例

参见

[virtual]
将字符放回输入序列,可能修改输入序列
( 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> 的公开成员函数)