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