std::basic_streambuf<CharT,Traits>:: pbackfail
|
protected
:
virtual int_type pbackfail ( int_type c = Traits :: eof ( ) ) ; |
||
Эта функция может быть вызвана только при выполнении любого из следующих условий:
- gptr ( ) является нулевым указателем ,
- 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| 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
)
|
|
перемещает указатель следующего символа во входной последовательности на один назад
(публичная функция-член) |
|
|
возвращает один символ обратно во входную последовательность
(публичная функция-член) |