operator>>(std::basic_istream)
De es.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) | |
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 );
|
(2) | (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. Después de construir y verificar el objeto centinela, 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 de una FormattedInputFunction).2) Se comporta como una FormattedInputFunction. Después de construir y verificar el objeto centinela, que puede omitir espacios en blanco iniciales, extrae caracteres sucesivos y los almacena en ubicaciones sucesivas de un arreglo de caracteres cuyo primer elemento está apuntado por(hasta C++20)
s. La extracción se detiene si se cumple alguna de las siguientes condiciones:
- Un carácter de espacio en blanco (según lo determinado por la ctype<CharT> faceta) se encuentra. El carácter de espacio en blanco no se extrae.
|
(hasta C++20) |
|
(desde C++20) |
- Ocurre fin de archivo en la secuencia de entrada (esto también establece eofbit).
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, dada una referencia rvalue 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 formada y Istream es un tipo de clase derivado pública e inequívocamente de std::ios_base.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
Ejecutar este código
#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) |