Namespaces
Variants

std::strstreambuf:: pbackfail

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = EOF ) ;
(устарело в C++98)
(удалено в C++26)

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

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

Содержание

Параметры

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

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

c при успехе, за исключением случая, когда c был EOF , в этом случае возвращается неопределенное значение, отличное от EOF .

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> )