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

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

Spec-Zone.ru

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