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(constchar* 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 ) |