protected virtual member function
<streambuf> <iostream>

std::basic_streambuf::uflow

int_type uflow();
从流缓冲区获取字符并在下溢时前进位置
这是由其他成员函数调用的虚函数,用于获取*受控输入序列*中的当前字符,然后将位置指示符前进到下一个字符。

当*获取指针*(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]);
}

参数



返回值

如果对underflow的调用返回*文件结束*符(traits_type::eof())的值,则此函数也返回该值。
否则,它将返回*受控输入序列*中当前位置的字符,并使用成员traits_type::to_int_type将其转换为int_type类型的值。
成员类型int_type是能够表示任何字符值或特殊*文件结束*符的整型。

数据竞争

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

异常安全

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

另见