Namespaces
Variants

std::strstreambuf:: pbackfail

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = EOF ) ;
(obsoleto en C++98)
(eliminado en C++26)

Esta función virtual protegida es llamada por las funciones públicas basic_streambuf::sungetc y basic_streambuf::sputbackc (que, a su vez, son llamadas por basic_istream::unget y basic_istream::putback ).

1) El solicitante está pidiendo que el área de obtención tenga respaldo de un carácter ( pbackfail() se llama sin argumentos o con EOF como argumento)
a) Primero, verifica si hay una posición de putback, y si realmente no la hay, falla ( strstreambuf no tiene una fuente externa de caracteres para volver a leer).
b) Si el llamador estaba equivocado y la posición de putback está de hecho disponible, simplemente decrementa basic_streambuf::gptr() , por ejemplo llamando gbump ( - 1 ) .
2) El llamador intenta devolver un carácter diferente del que se recuperó anteriormente ( pbackfail() se llama con el carácter que necesita ser devuelto), en cuyo caso
a) Primero, verifica si hay una posición de putback, y si no la hay, falla.
b) Luego verifica qué carácter está en la posición de retroceso. Si el carácter contenido allí ya es igual a ( char ) c , entonces simplemente decrementa basic_streambuf::gptr() .
c) De lo contrario, si el búfer es inmodificable (este strstreambuf fue construido con un literal de cadena o algún otro const array), falla.
d) De lo contrario, decrementa basic_streambuf::gptr() y escribe c en la ubicación apuntada por gptr ( ) después del ajuste.

Contenidos

Parámetros

c - el carácter a devolver, o Traits :: eof ( ) para indicar que se solicita el retroceso del área de obtención

Valor de retorno

c en caso de éxito, excepto si c era EOF , en cuyo caso se retorna un valor no especificado diferente de EOF .

EOF en caso de fallo.

Ejemplo

Véase también

[virtual]
coloca un carácter de vuelta en la secuencia de entrada, posiblemente modificando la secuencia de entrada
(función miembro protegida virtual de std::basic_streambuf<CharT,Traits> )
mueve el siguiente puntero en la secuencia de entrada hacia atrás una posición
(función miembro pública de std::basic_streambuf<CharT,Traits> )
coloca un carácter de vuelta en la secuencia de entrada
(función miembro pública de std::basic_streambuf<CharT,Traits> )
extrae un carácter hacia atrás
(función miembro pública de std::basic_istream<CharT,Traits> )
coloca un carácter en el flujo de entrada
(función miembro pública de std::basic_istream<CharT,Traits> )