std::basic_streambuf<CharT,Traits>::pbackfail
protected: virtual int_type pbackfail( int_type c = Traits::eof() ); |
Эта функция может быть вызвана только в случае, если выполняется хотя бы одно из следующих условий:
-
gptr()равен null, -
gptr() == eback(), или -
traits::eq(traits::to_char_type(c), gptr()[-1])возвращаетfalse.
Эта функция вызывается общедоступными функциями sungetc() и sputbackc() (которые, в свою очередь, вызываются basic_istream::unget и basic_istream::putback) в следующих случаях:
pbackfail() вызывается без аргументов). В этом случае цель pbackfail() — отступить на одну позицию назад в области получения, если это разрешено связанной последовательностью символов (например, поток с буфером, связанным с файлом, может перезагрузить буфер из файла, начав с позиции на один символ раньше). pbackfail() вызывается с символом, который нужно вернуть). В этом случае цель pbackfail() — поместить символ c в область получения в позиции, предшествующей basic_streambuf::gptr(), и, при возможности, изменить связанную последовательность символов, чтобы отразить это изменение. Это может включать откат области получения, как в первом варианте.Базовая версия этой функции в базовом классе ничего не делает и возвращает Traits::eof() во всех ситуациях. Эта функция переопределяется производными классами: basic_stringbuf::pbackfail, basic_filebuf::pbackfail, strstreambuf::pbackfail, и ожидается, что она будет переопределена в пользовательских и сторонних библиотечных классах потоков.
Параметры
| ch | - | возвращаемый символ или Traits::eof() если требуется только откат |
Возвращаемое значение
Traits::eof() в случае неудачи, какое-то другое значение для указания успеха. Базовая версия всегда возвращает значение неудачи.
Пример
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 32 | C++98 | условие вызова 'traits::eq(*gptr(),traits::to_char_type(c))возвращает false' не соответствовало описанию sputbackc() |
исправлено для соответствия описанию |
См. также
|
[virtual]
|
откатывает последовательность ввода для возвращения символа, не влияя на связанный файл (виртуальная защищённая функция члена класса std::basic_filebuf<CharT,Traits>) |
|
[virtual]
|
возвращает символ в последовательность ввода (виртуальная защищённая функция члена класса std::basic_stringbuf<CharT,Traits,Allocator>) |
|
[virtual]
|
откатывает последовательность ввода для возвращения символа (виртуальная защищённая функция члена класса std::strstreambuf) |
| сдвигает указатель следующего символа в последовательности ввода назад на один (общедоступная функция-член) |
|
| возвращает один символ в последовательность ввода (общедоступная функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_streambuf/pbackfail