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