受保护的虚成员函数
<fstream>

std::basic_filebuf::pbackfail

int_type pbackfail (int_type c = traits_type::eof());
在下溢时将字符放回
将当前输入位置向前移动一个字符,并在支持的情况下,将 c 作为下一个要读取的字符提供。

如果实现不支持写入回退位置,则 c 必须匹配回退位置的字符,或者为文件尾值 (traits_type::eof())。否则,该函数将失败。该函数使用 traits_type::eq 进行比较,并在需要时使用 traits_type::to_char_type 转换 c

如果在调用之前 get 指针 (gptr) 位于字符序列的开头,则函数可能会失败,或者根据库实现提供额外的回退位置并成功。

在任何情况下,函数都不会修改关联文件的内容。

失败时,函数将返回文件尾值 (traits_type::eof()),而不会更改get 指针 (gptr)。

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

此成员函数重写了继承的虚成员 basic_streambuf::pbackfail

参数

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

返回值

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

数据竞争

修改 basic_filebuf 对象。
同时访问同一个文件流缓冲区对象可能导致数据争用。

异常安全

基本保证:如果抛出异常,*文件流缓冲区*处于有效状态。

另见