Spec-Zone.ru › C++

std::strstreambuf::pbackfail

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 в случае неудачи.

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/strstreambuf/pbackfail

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API