std::ws
Definido en el archivo de encabezado <istream>
|
||
template< class CharT, class Traits > std::basic_istream<CharT, Traits>& ws( std::basic_istream<CharT, Traits>& is ); |
||
Descarta los espacios en blanco iniciales de un flujo de entrada.
Se comporta como una FunciónDeEntradaSinFormato, excepto que is.gcount() no se modifica. Después de construir y verificar el objeto centinela, extrae caracteres del flujo y los descarta hasta que se produzca alguna de las siguientes condiciones:
- se produce una condición de fin de archivo en la secuencia de entrada (en cuyo caso la función llama a setstate(eofbit) pero no establece
failbit
; esto no se aplica sieofbit
ya está establecido en is antes de la llamada aws
, en cuyo caso la construcción del objeto centinela estableceríafailbit
).
- el siguiente carácter disponible c en la secuencia de entrada no es un espacio en blanco según lo determinado por std::isspace(c, is.getloc()). No se extraen los caracteres que no son espacios en blanco.
Este es un manipulador de E/S de solo entrada, que se puede llamar con una expresión como in >> std::ws para cualquier in del tipo std::basic_istream.
Contenido |
[editar] Parámetros
is | - | Referencia al flujo de entrada. |
[editar] Valor de retorno
is (referencia al flujo después de la extracción de espacios consecutivos).
[editar] Notas
Si eofbit
se establece en la transmisión antes de la llamada, la construcción del objeto centinela establecerá failbit
.
[editar] Ejemplo
#include <iomanip> #include <iostream> #include <istream> #include <sstream> #include <string> int main() { for (const char* str : {" #1 test", "\t #2 test", "#3 test"}) { std::string line; std::getline(std::istringstream{str}, line); std::cout << "getline devuelve:\t" << std::quoted(line) << '\n'; std::istringstream iss{str}; std::getline(iss >> std::ws, line); std::cout << "ws + getline devuelve:\t" << std::quoted(line) << '\n'; } }
Salida:
getline devuelve: " #1 test" ws + getline devuelve: "#1 test" getline devuelve: " #2 test" ws + getline devuelve: "#2 test" getline devuelve: "#3 test" ws + getline devuelve: "#3 test"
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 415 | C++98 | Llamar a std::ws podría no construir el objeto centinela(no es coherente con otras funciones de entrada). |
Es necesario construir el objeto centinela. |
[editar] Véase también
Extrae y descarta caracteres hasta encontrar el carácter dado. (función miembro pública de std::basic_istream )
|