std::basic_streambuf<CharT,Traits>:: sungetc
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
int_type sungetc
(
)
;
|
||
Si hay una posición de retroceso disponible en el área de obtención ( gptr ( ) > eback ( ) ), entonces decrementa el siguiente puntero ( gptr() ) y devuelve el carácter al que ahora apunta.
Si una posición de putback no está disponible, entonces llama a pbackfail() para retroceder la secuencia de entrada si es posible.
La función de flujo de E/S basic_istream::unget se implementa en términos de esta función.
Contenidos |
Parámetros
(ninguno)
Valor de retorno
Si la posición de retroceso estaba disponible, devuelve el carácter al que ahora apunta el siguiente puntero, convertido a
int_type
con
Traits
::
to_int_type
(
*
gptr
(
)
)
. La siguiente entrada de un solo carácter desde este streambuf devolverá este carácter.
Si la posición de reintroducción no estaba disponible, retorna lo que pbackfail() retorna, que es Traits :: eof ( ) en caso de fallo.
Ejemplo
#include <iostream> #include <sstream> int main() { std::stringstream s("abcdef"); // gptr() apunta a 'a' char c1 = s.get(); // c = 'a', gptr() ahora apunta a 'b' char c2 = s.rdbuf()->sungetc(); // igual que s.unget(): gptr() apunta a 'a' nuevamente char c3 = s.get(); // c3 = 'a', gptr() ahora apunta a 'b' char c4 = s.get(); // c4 = 'b', gptr() ahora apunta a 'c' std::cout << c1 << c2 << c3 << c4 << '\n'; s.rdbuf()->sungetc(); // retrocede a 'b' s.rdbuf()->sungetc(); // retrocede a 'a' int eof = s.rdbuf()->sungetc(); // nada que retroceder: pbackfail() falla if (eof == EOF) std::cout << "Nothing to unget after 'a'\n"; }
Salida:
aaab Nothing to unget after 'a'
Véase también
|
coloca un carácter de vuelta en la secuencia de entrada
(función miembro pública) |
|
|
extrae un carácter hacia atrás
(función miembro pública de
std::basic_istream<CharT,Traits>
)
|