命名空间
变体
操作

std::strstreambuf::pbackfail

来自 cppreference.com
< 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

[编辑] 示例

[编辑] 另请参阅

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