Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: 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() вызывается без аргументов или с Traits :: eof ( ) в качестве аргумента)
a) Сначала проверяет, существует ли позиция возврата, и если её действительно нет, завершается неудачей. (stringbuf не имеет внешнего источника символов для повторного чтения)
b) Если вызывающая сторона была не права и позиция возврата символа фактически доступна, просто уменьшает basic_streambuf::gptr() , например, вызывая gbump ( - 1 ) .
2) Вызывающая сторона пытается вернуть символ, отличный от ранее извлеченного ( pbackfail() вызывается с символом, который необходимо вернуть), в этом случае
a) Сначала проверяет, есть ли позиция возврата, и если нет, завершается неудачей.
b) Затем проверяет, какой символ находится в позиции возврата. Если символ, хранящийся там, уже равен c , как определено с помощью Traits :: eq ( to_char_type ( c ) , gptr ( ) [ - 1 ] ) , тогда просто уменьшает basic_streambuf::gptr() .
c) В противном случае, если буфер открыт только для чтения, операция завершается неудачей.
d) В противном случае, если буфер открыт для записи ( mode && std:: ios_base :: out не равно нулю), то уменьшает basic_streambuf::gptr() и записывает c в позицию, на которую указывает gptr() после корректировки.

Содержание

Параметры

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