Spec-Zone.ru › C++

std::basic_filebuf<CharT,Traits>::underflow

protected:
virtual int_type underflow()

Считывает больше данных в область ввода.

Ведёт себя как базовый класс std::basic_streambuf::underflow, за исключением того, что для считывания данных из связанной последовательности символов (файла) в область получения, сначала считывает байты из файла в временный буфер (выделяется столько, сколько необходимо), затем использует std::codecvt::in встроенной локали для преобразования внешнего (как правило, многобайтового) представления во внутренний вид, который затем используется для заполнения области получения. Преобразование может быть пропущено, если std::codecvt::always_noconv локали возвращает true.

Параметры

(нет)

Возвращаемое значение

Traits::to_int_type(*gptr()) (первый символ ожидаемой последовательности) в случае успеха или Traits::eof() в случае неудачи.

Пример

#include <fstream>
#include <iostream>
 
struct mybuf : std::filebuf
{
    int underflow()
    {
         std::cout << "Before underflow(): size of the get area is "
                   << egptr()-eback() << " with "
                   << egptr()-gptr() << " read positions available\n";
         int rc = std::filebuf::underflow();
         std::cout << "underflow() returns " << rc << ".\nAfter the call, "
                   << "size of the get area is "
                   << egptr()-eback() << " with "
                   << egptr()-gptr() << " read positions available\n";
        return rc;
    }
};
 
int main()
{
    mybuf buf;
    buf.open("test.txt", std::ios_base::in);
    std::istream stream(&buf);
    while (stream.get()) ;
}

Возможный вывод:

Before underflow(): size of the get area is 0 with 0 read positions available
underflow() returns 73.
After the call, size of the get area is 110 with 110 read positions available
Before underflow(): size of the get area is 110 with 0 read positions available
underflow() returns -1.
After the call, size of the get area is 0 with 0 read positions available

См. также

underflow
[virtual]
считывает символы из связанной входной последовательности в область получения
(виртуальная защищённая функция-член std::basic_streambuf<CharT,Traits>)
underflow
[virtual]
возвращает следующий доступный символ в последовательности ввода
(виртуальная защищённая функция-член std::basic_stringbuf<CharT,Traits,Allocator>)
underflow
[virtual]
считывает символ из последовательности ввода без продвижения указателя
(виртуальная защищённая функция-член std::strstreambuf)
uflow
[virtual]
считывает из связанного файла и продвигает указатель next в области получения
(виртуальная защищённая функция-член)
overflow
[virtual]
записывает символы в связанный файл из области записи
(виртуальная защищённая функция-член)
sgetc
считывает один символ из последовательности ввода без продвижения последовательности
(публичная функция-член std::basic_streambuf<CharT,Traits>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_filebuf/underflow

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API