Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: 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á requiriendo que el área de obtención tenga respaldo de un carácter ( pbackfail() se llama sin argumentos), en cuyo caso, esta función vuelve a leer el archivo comenzando un byte antes y 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, retrocede el área de obtención releyendo el archivo comenzando un byte antes.
a) Luego verifica qué carácter está en la posición de retroceso. Si el carácter almacenado allí ya es igual a c , determinado por Traits :: eq ( to_char_type ( c ) , gptr ( ) [ - 1 ] ) , entonces simplemente decrementa basic_streambuf::gptr() .
b) De lo contrario, si el búfer puede modificar su propia área de obtención, decrementa basic_streambuf::gptr() y escribe c a la ubicación apuntada por gptr() después del ajuste.

Esta función nunca modifica el archivo, solo el área de obtención del búfer en memoria.

Si el archivo no está abierto ( is_open ( ) == false , esta función retorna Traits :: eof ( ) inmediatamente.

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