protected virtual member function
<streambuf> <iostream>
从流缓冲区获取字符并在下溢时前进位置
这是由其他成员函数调用的虚函数,用于获取*受控输入序列*中的当前字符,然后将位置指示符前进到下一个字符。
当*获取指针*(gptr)没有可用的读取位置时,像sbumpc这样的公共成员函数会调用它来请求一个新字符。
它在basic_streambuf中的默认行为是调用成员underflow,返回相同的值,但在成功时将位置指示符前进到下一个字符。派生类可以根据需要重写此行为以实现不同的行为。
它在basic_streambuf中的行为与以下实现相同:
1 2 3 4 5
|
int_type uflow() {
if ( underflow() == traits_type::eof() ) return traits_type::eof();
gbump(1);
return traits_type::to_int_type(gptr()[-1]);
}
|
数据竞争
修改*流缓冲区*对象。
同时访问同一*流缓冲区*对象可能会导致数据竞争。
异常安全
基本保证:如果抛出异常,*流缓冲区*处于有效状态。