std::strstreambuf::pbackfail

< cpp‎ | io‎ | strstreambuf
protected:
virtual int_type pbackfail( int_type c = EOF );

此受保护虚函数为公开函数 basic_streambuf::sungetcbasic_streambuf::sputbackc 所调用(继而为 basic_istream::ungetbasic_istream::putback 所调用)。

1) 调用方请求后备获取区一个字符(以无参数或以 EOF 为参数调用 pbackfail()
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> 的公开成员函数)