Namespaces
Variants

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

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = Traits :: eof ( ) )

Эта защищённая виртуальная функция вызывается публичными функциями basic_streambuf::sungetc и basic_streambuf::sputbackc (которые, в свою очередь, вызываются basic_istream::unget и basic_istream::putback ).

1) Вызывающая сторона запрашивает резервирование области чтения на один символ ( pbackfail() вызывается без аргументов), в этом случае данная функция перечитывает файл, начиная на один байт раньше, и уменьшает basic_streambuf::gptr() , например, вызывая gbump ( - 1 ) .
2) Вызывающая сторона пытается вернуть символ, отличный от ранее извлеченного ( pbackfail() вызывается с символом, который необходимо вернуть), в этом случае
a) Сначала проверяет, существует ли позиция возврата, и если нет, откатывает область получения путем повторного чтения файла, начиная на один байт раньше.
а) Затем проверяет, какой символ находится в позиции возврата. Если символ, находящийся там, уже равен c , как определено с помощью Traits :: eq ( to_char_type ( c ) , gptr ( ) [ - 1 ] ) , тогда просто уменьшает basic_streambuf::gptr() .
b) В противном случае, если буферу разрешено изменять собственную область чтения, уменьшает basic_streambuf::gptr() и записывает c в позицию, на которую указывает gptr() после корректировки.

Эта функция никогда не изменяет файл, только область получения в буфере памяти.

Если файл не открыт ( is_open ( ) == false , эта функция немедленно возвращает Traits :: eof ( ) .

Содержание

Параметры

c - символ для возврата, или Traits::eof() для указания запроса на откат области получения

Возвращаемое значение

c при успешном выполнении, за исключением случая, когда c был Traits :: eof ( ) , в этом случае возвращается Traits :: not_eof ( c ) .

Traits :: eof ( ) при неудаче.

Пример

Смотрите также

[virtual]
помещает символ обратно во входную последовательность, возможно изменяя входную последовательность
(виртуальная защищённая функция-член std::basic_streambuf<CharT,Traits> )
перемещает следующий указатель во входной последовательности на один символ назад
(публичная функция-член std::basic_streambuf<CharT,Traits> )
помещает один символ обратно во входную последовательность
(публичная функция-член std::basic_streambuf<CharT,Traits> )
отменяет извлечение символа
(публичная функция-член std::basic_istream<CharT,Traits> )
помещает символ во входной поток
(публичная функция-член std::basic_istream<CharT,Traits> )