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是能夠表示任何字元值或特殊*檔案結束*符的整型。

資料競爭

修改*流緩衝區*物件。
同時訪問同一*流緩衝區*物件可能會導致資料競爭。

異常安全

基本保證:如果丟擲異常,*流緩衝區*處於有效狀態。

另見