受保护的虚成员函数
<streambuf> <iostream>

std::basic_streambuf::pbackfail

int_type pbackfail (int_type c = traits_type::eof());
将字符放回输入流(在下溢时)
由其他成员函数调用,用于将字符放回*受控输入序列*并减少位置指示器。

它仅在*读取指针*(gptr)没有可用的回退位置,或者要放回的字符与缓冲区中的字符不匹配时被调用(公共成员函数sungetcsputbackc会这样做)。

basic_streambuf中的默认行为是始终返回traits_type::eof()(表示失败),但派生类可以覆盖此行为来修改缓冲区或gptregptr内部指针以适应回退请求(如果支持)。basic_filebufbasic_stringbuf都会覆盖此虚成员函数(请参见basic_filebuf::pbackfailbasic_stringbuf::pbackfail)。

参数

c
要放回的字符,或者*文件结束符*值(traits_type::eof()),用于保留回退位置的字符值。
如果函数成功并且c与该位置的字符不匹配,则*受控输入序列*的内容是否被修改是未指定的。
成员类型int_type是一个整型,能够表示任何字符值或特殊的*文件结束符*值。

返回值

成功时,通过成员traits_type::to_int_type转换到int_type类型的值,即放回的字符的值。
如果失败,该函数返回*文件结束符*值(traits_type::eof())。
成员类型int_type是一个整型,能够表示任何字符值或特殊的*文件结束符*值。

数据竞争

修改*流缓冲区*对象。
并发访问同一*流缓冲区*对象可能会导致数据争用。

异常安全

基本保证:如果发生异常,*流缓冲区*处于有效状态。

另见