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 establecefailbit; esto no se aplica sieofbitya está establecido enisantes de la llamada aws, en cuyo caso la construcción del objeto centinela estableceríafailbit).
- el siguiente carácter disponible
cen la secuencia de entrada no es un espacio en blanco según lo determinado porstd::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.
Parámetros
| is | - | Referencia al flujo de entrada. |
Valor de retorno
is (referencia al flujo después de la extracción de espacios consecutivos).
Notas
Si eofbit se establece en la transmisión antes de la llamada, la construcción del objeto centinela establecerá failbit.
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"
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. |
Véase también
| Extrae y descarta caracteres hasta encontrar el carácter dado. (función miembro pública de std::basic_istream)
|