std::basic_istream<CharT,Traits>:: putback
|
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
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) |