Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: pbackfail

From cppreference.net
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 ) когда либо:

1) В области получения отсутствует позиция возврата ( pbackfail() вызывается без аргументов). В этой ситуации цель функции pbackfail() — отступить на один символ назад в области получения, если соответствующая последовательность символов позволяет это сделать (например, буфер потока, связанный с файлом, может перезагрузить буфер из файла, начиная на один символ раньше).
2) Вызывающая сторона пытается вернуть символ, отличный от ранее извлеченного ( 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 )
перемещает указатель следующего символа во входной последовательности на один назад
(публичная функция-член)
возвращает один символ обратно во входную последовательность
(публичная функция-член)