protected virtual member function
<sstream>

std::basic_stringbuf::pbackfail

int_type pbackfail (int_type c = traits_type::eof());
将字符放回
将*get pointer*(gptr)向后移动一位,指向前一个字符。如果该basic_stringbuf对象是用ios_base::out构造的,则会将c存储在该位置。

如果该basic_stringbuf对象不是用ios_base::out构造的,则c必须与putback位置的字符匹配,或者为*end-of-file*值(traits_type::eof())。否则,该函数将失败。该函数使用traits_type::eq进行比较,并在需要时将c通过traits_type::to_char_type进行转换。

如果*get pointer*在调用之前已到达字符序列的开头,该函数也会失败。

失败时,该函数返回*end-of-file*值(traits_type::eof()),而不改变*get pointer*(gptr)。

当*get pointer*(gptr)没有可用的putback位置,或者要放回的字符与缓冲区中的字符不匹配时,basic_streambuf的公有成员函数(如sungetcsputbackc)会调用此虚函数。

参数

c
要放回的字符,或者*文件结束符*值(traits_type::eof()),用于保留回退位置的字符值。
成员类型int_type是能够表示任何字符值或特殊*文件结束*符的整型。

返回值

成功时,返回traits_type::not_eof(c)
如果失败,该函数返回*文件结束符*值(traits_type::eof())。
成员类型int_type是能够表示任何字符值或特殊*文件结束*符的整型。

数据竞争

修改 basic_stringbuf 对象。
并发访问同一对象可能导致数据竞争。

异常安全

基本保证:如果抛出异常,对象处于有效状态。

另见