Namespaces
Variants

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

From cppreference.net
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.

1-11) Extrae un valor potencialmente omitiendo los espacios en blanco precedentes. El valor se almacena en una referencia dada value .
Esta función se comporta como una FormattedInputFunction . Después de construir y verificar el objeto sentry, que puede omitir espacios en blanco iniciales, extrae un valor llamando a std::num_get::get() .
12) Extrae un valor short potencialmente omitiendo espacios en blanco precedentes. El valor se almacena en una referencia value dada.
Esta función se comporta como una FormattedInputFunction . Después de construir y verificar el objeto sentry, que puede omitir espacios en blanco iniciales, extrae un valor long lval llamando a std::num_get::get() . Después de eso:
13) Extrae un valor int potencialmente omitiendo espacios en blanco precedentes. El valor se almacena en una referencia dada value .
Esta función se comporta como una FormattedInputFunction . Después de construir y verificar el objeto centinela, que puede omitir espacios en blanco iniciales, extrae un valor long lval llamando a std::num_get::get() . Después de eso:
14) Extrae un valor de punto flotante extendido potencialmente omitiendo espacios en blanco precedentes. El valor se almacena en una referencia dada value . La biblioteca proporciona sobrecargas para todos los extended floating-point types sin calificadores cv como tipo referenciado del parámetro value .
Determina el tipo de punto flotante estándar 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 FP es 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 FP es double .
  • De lo contrario, FP es long double .
Esta función se comporta como una FormattedInputFunction . Después de construir y verificar el objeto sentry, que puede omitir espacios en blanco iniciales, extrae un valor FP fval llamando a std::num_get::get() . Después de eso:
  • Si fval < - std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) , establece failbit y 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 failbit y almacena std:: numeric_limits < /* extended-floating-point-type */ > :: max ( ) en val .
  • De lo contrario, almacena static_cast < /* extended-floating-point-type */ > ( fval ) en val .
15-17) Llama func ( * this ) , donde func es un manipulador de E/S.
18) Se comporta como una UnformattedInputFunction . Después de construir y verificar el objeto sentry, extrae todos los datos de * this y los almacena en sb . La extracción se detiene si se cumple una de las siguientes condiciones:
  • 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 failbit está habilitado en exceptions() ).
En cualquier caso, almacena el número de caracteres extraídos en la variable miembro accedida por llamadas posteriores a gcount() . Si sb es un puntero nulo o si no se insertaron caracteres en sb , llama a setstate ( failbit ) (lo cual puede lanzar std::ios_base::failure si está habilitado).

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

1-16,18) * this
17) func ( * this )

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)
realiza entrada y salida de flujo en motor de números pseudoaleatorios
(plantilla de función)
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)