std::basic_istream<CharT,Traits>:: get
|
int_type get
(
)
;
|
(1) | |
|
basic_istream
&
get
(
char_type
&
ch
)
;
|
(2) | |
|
basic_istream
&
get
(
char_type
*
s,
std::
streamsize
count
)
;
|
(3) | |
|
basic_istream
&
get
(
char_type
*
s,
std::
streamsize
count, char_type delim
)
;
|
(4) | |
|
basic_istream
&
get
(
basic_streambuf
&
strbuf
)
;
|
(5) | |
|
basic_istream
&
get
(
basic_streambuf
&
strbuf, char_type delim
)
;
|
(6) | |
Extrae carácter o caracteres del flujo.
Todas las versiones se comportan como UnformattedInputFunction s . Después de construir y verificar el objeto centinela, estas funciones realizan lo siguiente:
- count es menor que 1 o se han almacenado count - 1 caracteres.
- ocurre una condición de fin de archivo en la secuencia de entrada (se llama a setstate ( eofbit ) ).
-
el siguiente carácter de entrada disponible
c
es igual a
delim
, determinado por
Traits
::
eq
(
c, delim
)
. Este carácter no se extrae (a diferencia de
getline()).
- se produce una condición de fin de archivo en la secuencia de entrada.
- la inserción en la secuencia de salida falla (en cuyo caso el carácter que no se pudo insertar no se extrae).
- el siguiente carácter disponible en la entrada c es igual a delim , determinado por Traits :: eq ( c, delim ) . Este carácter no se extrae.
- ocurre una excepción (en cuyo caso la excepción se captura y no se relanza).
Si no se extrajo ningún carácter, llama a setstate ( failbit ) .
Todas las versiones establecen el valor de gcount() al número de caracteres extraídos.
Contenidos |
Parámetros
| ch | - | referencia al carácter donde escribir el resultado |
| s | - | puntero a la cadena de caracteres donde almacenar los caracteres |
| count | - | tamaño de la cadena de caracteres apuntada por s |
| delim | - | carácter delimitador para detener la extracción. No se extrae ni se almacena |
| strbuf | - | búfer de flujo para leer el contenido |
Valor de retorno
Excepciones
Si una operación interna lanza una excepción, esta es capturada y
badbit
se establece. Si
exceptions()
está configurado para
badbit
, la excepción se relanza.
Ejemplo
#include <iostream> #include <sstream> int main() { std::istringstream s1("Hello, world."); char c1 = s1.get(); // lee 'H' std::cout << "after reading " << c1 << ", gcount() == " << s1.gcount() << '\n'; char c2; s1.get(c2); // lee 'e' char str[5]; s1.get(str, 5); // lee "llo," std::cout << "after reading " << str << ", gcount() == " << s1.gcount() << '\n'; std::cout << c1 << c2 << str; s1.get(*std::cout.rdbuf()); // lee el resto, sin incluir '\n' std::cout << "\nAfter the last get(), gcount() == " << s1.gcount() << '\n'; }
Salida:
after reading H, gcount() == 1 after reading llo,, gcount() == 4 Hello, world. After the last get(), gcount() == 7
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 370 | C++98 |
el efecto de la sobrecarga
(5)
era
get
(
s, count, widen
(
'
\n
'
)
)
,
que es el efecto de la sobrecarga (3) |
corregido a
get ( strbuf, widen ( ' \n ' ) ) |
| LWG 531 | C++98 |
las sobrecargas
(3,4)
no podían manejar el
caso donde count no es positivo |
no se extrae ningún carácter
en este caso |
Véase también
|
extrae bloques de caracteres
(función miembro pública) |
|
|
extrae datos formateados
(función miembro pública) |
|
|
extrae caracteres y arreglos de caracteres
(plantilla de función) |