Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: pbackfail

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

Esta función solo puede llamarse si se cumple alguna de las siguientes condiciones:

  • gptr ( ) es nulo ,
  • gptr ( ) == eback ( ) , o
  • traits :: eq ( traits :: to_char_type ( c ) , gptr ( ) [ - 1 ] ) retorna false .

Esta función es llamada por las funciones públicas sungetc() y sputbackc() (que, a su vez, son llamadas por basic_istream::unget y basic_istream::putback ) cuando cualquiera de las siguientes condiciones se cumple:

1) No hay posición de retroceso en el área de obtención ( pbackfail() se llama sin argumentos). En esta situación, el propósito de pbackfail() es retroceder el área de obtención un carácter, si la secuencia de caracteres asociada lo permite (por ejemplo, un streambuf respaldado por archivo puede recargar el búfer desde un archivo, comenzando un carácter antes).
2) El llamante intenta devolver un carácter diferente del que se recuperó anteriormente ( pbackfail() se llama con el carácter que necesita ser devuelto). En esta situación, el propósito de pbackfail() es colocar el carácter c en el área de obtención en la posición justo antes de basic_streambuf::gptr() , y, si es posible, modificar la secuencia de caracteres asociada para reflejar este cambio. Esto puede implicar retroceder el área de obtención como en la primera variante.

La versión de la clase base por defecto de esta función no hace nada y retorna Traits :: eof ( ) en todas las situaciones. Esta función es sobrescrita por las clases derivadas: basic_stringbuf::pbackfail , basic_filebuf::pbackfail , strstreambuf::pbackfail , y se espera que sea sobrescrita por clases de flujo definidas por el usuario y bibliotecas de terceros.

Contenidos

Parámetros

ch - carácter a reintroducir o Traits :: eof ( ) si solo se solicita retroceso

Valor de retorno

Traits :: eof ( ) en caso de fallo, algún otro valor para indicar éxito. La versión de la clase base siempre falla.

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 32 C++98 la condición de llamada ' traits :: eq ( * gptr ( ) ,traits :: to_char_type ( c ) )
retorna false ' no coincidía con la descripción de sputbackc()
corregido para coincidir
con la descripción

Véase también

[virtual]
retrocede la secuencia de entrada para devolver un carácter, sin afectar el archivo asociado
(función miembro protegida virtual de std::basic_filebuf<CharT,Traits> )
[virtual]
devuelve un carácter a la secuencia de entrada
(función miembro protegida virtual de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
retrocede la secuencia de entrada para devolver un carácter
(función miembro protegida virtual de std::strstreambuf )
mueve el siguiente puntero en la secuencia de entrada hacia atrás una posición
(función miembro pública)
devuelve un carácter a la secuencia de entrada
(función miembro pública)