Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: pbackfail

From cppreference.net
protected :
virtual int_type pbackfail ( int_type c = Traits :: eof ( ) )

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 Traits :: eof ( ) como argumento)
a) Primero, verifica si hay una posición de putback, y si realmente no la hay, falla. (stringbuf no tiene una fuente externa de caracteres para volver a leer)
b) Si el llamador estaba equivocado y la posición de retroceso 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 mantenido allí ya es igual a c , determinado por Traits :: eq ( to_char_type ( c ) , gptr ( ) [ - 1 ] ) , entonces simplemente decrementa basic_streambuf::gptr() .
c) De lo contrario, si el búfer está abierto solo para lectura, falla.
d) De lo contrario, si el búfer está abierto para escritura ( mode && std:: ios_base :: out es distinto de cero), entonces decrementa basic_streambuf::gptr() y escribe c a 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 Traits :: eof ( ) , en cuyo caso se devuelve Traits :: not_eof ( c ) .

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