std::basic_istream<CharT,Traits>:: operator>>
|
basic_istream
&
operator
>>
(
unsigned
short
&
value
)
;
|
(1) | |
|
basic_istream
&
operator
>>
(
unsigned
int
&
valor
)
;
|
(2) | |
|
basic_istream
&
operator
>>
(
long
&
value
)
;
|
(3) | |
|
basic_istream
&
operator
>>
(
unsigned
long
&
valor
)
;
|
(4) | |
|
basic_istream
&
operator
>>
(
long
long
&
valor
)
;
|
(5) | (desde C++11) |
|
basic_istream
&
operator
>>
(
unsigned
long
long
&
valor
)
;
|
(6) | (desde C++11) |
|
basic_istream
&
operator
>>
(
float
&
valor
)
;
|
(7) | |
|
basic_istream
&
operator
>>
(
double
&
value
)
;
|
(8) | |
|
basic_istream
&
operator
>>
(
long
double
&
valor
)
;
|
(9) | |
|
basic_istream
&
operator
>>
(
bool
&
value
)
;
|
(10) | |
|
basic_istream
&
operator
>>
(
void
*
&
value
)
;
|
(11) | |
|
basic_istream
&
operator
>>
(
short
&
value
)
;
|
(12) | |
|
basic_istream
&
operator
>>
(
int
&
value
)
;
|
(13) | |
|
basic_istream
&
operator
>>
(
/* extended-floating-point-type */
&
value
)
;
|
(14) | (desde C++23) |
|
basic_istream
&
operator
>>
(
std::
ios_base
&
(
*
func
)
(
std::
ios_base
&
)
)
;
|
(15) | |
|
basic_istream
&
operator
>>
(
std::
basic_ios
<
CharT, Traits
>
&
( * func ) ( std:: basic_ios < CharT, Traits > & ) ) ; |
(16) | |
|
basic_istream
&
operator
>>
(
basic_istream
&
(
*
func
)
(
basic_istream
&
)
)
;
|
(17) | |
|
basic_istream
&
operator
>>
(
std::
basic_streambuf
<
CharT, Traits
>
*
sb
)
;
|
(18) | |
Extrae valores de un flujo de entrada.
-
Si
lval
<
std::
numeric_limits
<
short
>
::
min
(
)
, establece
failbity almacena std:: numeric_limits < short > :: min ( ) en val . -
De lo contrario, si
std::
numeric_limits
<
short
>
::
max
(
)
<
lval
, establece
failbity almacena std:: numeric_limits < short > :: max ( ) en val . - De lo contrario, almacena static_cast < short > ( lval ) en val .
-
Si
lval
<
std::
numeric_limits
<
int
>
::
min
(
)
, establece
failbity almacena std:: numeric_limits < int > :: min ( ) en val . -
De lo contrario, si
std::
numeric_limits
<
int
>
::
max
(
)
<
lval
, establece
failbity almacena std:: numeric_limits < int > :: max ( ) en val . - De lo contrario, almacena static_cast < int > ( lval ) en val .
FP
de la siguiente manera:
-
Si el
rango de conversión de punto flotante
de
/* extended-floating-point-type */
es menor o igual que el de
float
, entonces
FPes float . -
De lo contrario, si el rango de conversión de punto flotante de
/* extended-floating-point-type */
es menor o igual que el de
double
, entonces
FPes double . -
De lo contrario,
FPes long double .
FP
fval
llamando a
std::num_get::get()
. Después de eso:
-
Si
fval
<
-
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
, establece
failbity almacena - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) en val . -
De lo contrario, si
std::
numeric_limits
<
/* extended-floating-point-type */
>
::
max
(
)
<
fval
, establece
failbity almacena std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) en val . - De lo contrario, almacena static_cast < /* extended-floating-point-type */ > ( fval ) en val .
-
- ocurre fin de archivo en la secuencia de entrada;
- la inserción en la secuencia de salida falla (en cuyo caso el carácter a insertar no se extrae);
-
ocurre una excepción (en cuyo caso la excepción se captura, y solo se vuelve a lanzar si no insertó caracteres y
failbitestá habilitado enexceptions()).
Si la extracción falla (por ejemplo, si se introduce una letra donde se espera un dígito), se escribe cero en
value
y se activa
failbit
. Para enteros con signo, si la extracción resulta en un valor demasiado grande o pequeño para caber en
value
,
se escribe
std::
numeric_limits
<
T
>
::
max
(
)
o
std::
numeric_limits
<
T
>
::
min
(
)
(respectivamente) y se activa el indicador
failbit
. Para enteros sin signo, si la extracción resulta en un valor demasiado grande o pequeño para caber en
value
,
se escribe
std::
numeric_limits
<
T
>
::
max
(
)
y se activa el indicador
failbit
.
Contenidos |
Parámetros
| value | - | referencia a un valor entero o de punto flotante para almacenar el valor extraído |
| func | - | puntero a función manipuladora de E/S |
| sb | - | puntero al búfer de flujo para escribir todos los datos |
Valor de retorno
Notas
Para la sobrecarga ( 14 ) , cuando el tipo de punto flotante extendido tiene un rango de conversión de punto flotante que no es igual al rango de ningún tipo estándar de punto flotante, entonces el redondeo doble durante la conversión puede resultar en valores inexactos. std::from_chars() puede utilizarse en situaciones donde la máxima precisión es importante.
Ejemplo
#include <iomanip> #include <iostream> #include <sstream> int main() { std::string input = "41 3.14 false hello world"; std::istringstream stream(input); int n; double f; bool b; stream >> n >> f >> std::boolalpha >> b; std::cout << "n = " << n << '\n' << "f = " << f << '\n' << "b = " << std::boolalpha << b << '\n'; // extract the rest using the streambuf overload stream >> std::cout.rdbuf(); std::cout << '\n'; }
Salida:
n = 41 f = 3.14 b = false 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 64 | C++98 |
no estaba claro si la sobrecarga
(18)
solo podía relanzar la
std::ios_base::failure lanzada al llamar setstate ( failbit ) |
todas las excepciones capturadas
pueden ser relanzadas |
| LWG 118 | C++98 |
las sobrecargas
(12,13)
delegaban la extracción a
num_get::get
,
pero no tiene sobrecargas para short y int |
se extrae un valor
long
en lugar de short o int |
| LWG 413 | C++98 |
la sobrecarga
(18)
solo relanzaba excepciones lanzadas durante la extracción
de caracteres de sb , pero los caracteres se extraen de * this |
se corrigió sb a * this |
| LWG 567 | C++98 |
la sobrecarga
(18)
se comportaba como una
FormattedInputFunction
debido a la resolución de LWG issue 60 |
se comporta como una
UnformattedInputFunction |
| LWG 661 | C++98 |
las sobrecargas
(12,13)
no almacenaban el número extraído
en value debido a la resolución de LWG issue 118 |
almacena el número si
no ocurre desbordamiento |
| LWG 696 | C++98 | value permanecía sin cambios en fallo de extracción |
se establece a cero o valores
mínimo/máximo |
Véase también
|
extrae caracteres y arreglos de caracteres
(plantilla de función) |
|
|
realiza entrada y salida de flujo en cadenas
(plantilla de función) |
|
|
realiza entrada y salida de flujo de conjuntos de bits
(plantilla de función) |
|
|
serializa y deserializa un número complejo
(plantilla de función) |
|
|
(C++11)
|
realiza entrada y salida de flujo en motor de números pseudoaleatorios
(plantilla de función) |
|
(C++11)
|
realiza entrada y salida de flujo en distribución de números pseudoaleatorios
(plantilla de función) |
|
extrae bloques de caracteres
(función miembro pública) |
|
|
extrae bloques de caracteres ya disponibles
(función miembro pública) |
|
|
extrae caracteres
(función miembro pública) |
|
|
extrae caracteres hasta encontrar el carácter especificado
(función miembro pública) |
|
|
(C++17)
|
convierte una secuencia de caracteres a un valor entero o de punto flotante
(función) |