Namespaces
Variants

operator>> (std::basic_istream)

From cppreference.net
Definido en el encabezado <istream>
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT & ch ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char & ch ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char & ch ) ;
(1)
(2)
template < class CharT, class Traits >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT * s ) ;

template < class Traits >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char * s ) ;

template < class Traits >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char * s ) ;
(hasta C++20)
template < class CharT, class Traits, std:: size_t N >

basic_istream < CharT, Traits > &
operator >> ( basic_istream < CharT, Traits > & st, CharT ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &
operator >> ( basic_istream < char , Traits > & st, signed char ( & s ) [ N ] ) ;

template < class Traits, std:: size_t N >
basic_istream < char , Traits > &

operator >> ( basic_istream < char , Traits > & st, unsigned char ( & s ) [ N ] ) ;
(desde C++20)
template < class Istream, class T >

Istream &&

operator >> ( Istream && st, T && value ) ;
(3) (desde C++11)
1,2) Realiza operaciones de entrada de caracteres.
1) Se comporta como una FormattedInputFunction . Tras construir y verificar el objeto sentry, que puede omitir espacios en blanco iniciales, extrae un carácter y lo almacena en ch . Si no hay ningún carácter disponible, establece failbit (además de eofbit que se establece según lo requerido para una FormattedInputFunction ).
2) Se comporta como una FormattedInputFunction . Después de construir y verificar el objeto sentry, que puede omitir espacios en blanco iniciales, extrae caracteres sucesivos y los almacena en ubicaciones sucesivas de un array de caracteres cuyo primer elemento está apuntado por (until C++20) s . La extracción se detiene si se cumple alguna de las siguientes condiciones:
  • Se encuentra un carácter de espacio en blanco (determinado por el facet ctype<CharT> ). El carácter de espacio en blanco no se extrae.
  • Si st. width ( ) es mayor que cero, se almacenan st. width ( ) - 1 caracteres.
(until C++20)
  • Se almacenan n - 1 caracteres, donde n se define de la siguiente manera:
(since C++20)
  • Ocurre el fin de archivo en la secuencia de entrada (esto también establece eofbit ).
En cualquier caso, se almacena un valor de carácter nulo adicional CharT ( ) al final de la salida. Si no se extrajeron caracteres, establece failbit (el carácter nulo aún se escribe, en la primera posición de la salida). Finalmente, llama a st. width ( 0 ) para cancelar los efectos de std::setw , si los hay.
3) Llama al operador de extracción apropiado, dado un rvalue reference a un objeto de flujo de entrada (equivalente a st >> std:: forward < T > ( value ) ). Esta sobrecarga participa en la resolución de sobrecarga solo si st >> std:: forward < T > ( value ) está bien formado y Istream es un tipo de clase derivado pública y unívocamente de std::ios_base .

Contenidos

Notas

Extraer un solo carácter que es el último carácter del flujo no establece eofbit : esto es diferente de otras funciones de entrada formateadas, como extraer el último entero con operator >> , pero este comportamiento coincide con el comportamiento de std::scanf con "%c" especificador de formato.

Parámetros

st - flujo de entrada de donde extraer los datos
ch - referencia a un carácter para almacenar el carácter extraído
s - puntero a (until C++20) un arreglo de caracteres para almacenar los caracteres extraídos

Valor de retorno

1,2) st
3) std :: move ( st )

Ejemplo

#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
    std::string input = "n greetings";
    std::istringstream stream(input);
    char c;
    const int MAX = 6;
    char cstr[MAX];
    stream >> c >> std::setw(MAX) >> cstr;
    std::cout << "c = " << c << '\n'
              << "cstr = " << cstr << '\n';
    double f;
    std::istringstream("1.23") >> f; // rvalue stream extraction
    std::cout << "f = " << f << '\n';
}

Salida:

c = n
cstr = greet
f = 1.23

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 13 C++98 la definición de n mencionaba un nombre inexistente eos reemplazado con CharT ( )
LWG 68 C++98 no se almacenaban caracteres nulos al final de la salida para la sobrecarga (2) almacena un carácter nulo
LWG 1203 C++98 la sobrecarga para flujo de rvalue devolvía referencia lvalue a la clase base devuelve referencia rvalue
a la clase derivada
LWG 2328 C++98 la sobrecarga para flujo de rvalue requería que otro argumento fuera lvalue modificado para aceptar rvalue
LWG 2534 C++98 la sobrecarga para flujo de rvalue no estaba restringida restringida

Véase también

extrae datos formateados
(función miembro pública)