命名空间
变体
操作

std::strstreambuf::pbackfail

来自 cppreference.cn
< cpp‎ | io‎ | strstreambuf
protected:
virtual int_type pbackfail( int_type c = EOF );
(C++98 起弃用)
(C++26 中移除)

此受保护的虚函数由公共函数 basic_streambuf::sungetcbasic_streambuf::sputbackc 调用(反过来,它们由 basic_istream::ungetbasic_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,但如果 cEOF,则返回除 EOF 之外的未指定值。

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