Spec-Zone.ru › C++

std::strstreambuf::pbackfail

protected:
virtual int_type pbackfail( int_type c = EOF );

Этот защищённый виртуальный метод вызывается общедоступными функциями 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/w/cpp/io/strstreambuf/pbackfail

Spec-Zone.ru

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