Namespaces
Variants

std::basic_istream<CharT,Traits>:: putback

From cppreference.net
basic_istream & putback ( char_type ch ) ;

Coloca el carácter ch de vuelta en el flujo de entrada para que el siguiente carácter extraído sea ch .

Primero limpia eofbit , luego se comporta como UnformattedInputFunction . Después de construir y verificar el objeto centinela, si rdbuf() no es nulo, llama a rdbuf ( ) - > sputbackc ( ch ) , que llama a rdbuf ( ) - > pbackfail ( ch ) si ch no es igual al carácter extraído más recientemente.

Si rdbuf() es nulo o si rdbuf - > sputbackc ( ch ) retorna Traits :: eof ( ) , llama a setstate ( badbit ) .

En cualquier caso, establece el gcount() contador a cero.

Contenidos

Parámetros

ch - carácter a colocar en el flujo de entrada

Valor de retorno

* this

Excepciones

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Si una operación interna lanza una excepción, esta es capturada y se establece badbit . Si exceptions() está configurado para badbit , la excepción es relanzada.

Ejemplo

Demuestra la diferencia entre putback() modificador y no modificador.

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream s1("Hello, world"); // IO stream
    s1.get();
    if (s1.putback('Y')) // modifies the buffer
        std::cout << s1.rdbuf() << '\n';
    else
        std::cout << "putback failed\n";
    std::cout << "--\n";
    std::istringstream s2("Hello, world"); // input-only stream
    s2.get();
    if (s2.putback('Y')) // cannot modify input-only buffer
        std::cout << s2.rdbuf() << '\n';
    else
        std::cout << "putback failed\n"; 
    s2.clear();
    std::cout << "--\n";
    if (s2.putback('H')) // non-modifying putback
        std::cout << s2.rdbuf() << '\n';
    else
        std::cout << "putback failed\n";
}

Salida:

Yello, world
--
putback failed
--
Hello, world

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 2243 C++98 sputbackc() se llamaba sin ningún argumento llamado con ch

Véase también

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)
lee el siguiente carácter sin extraerlo
(función miembro pública)