Espacios de nombres
Variantes

std::ws

De cppreference.com
< cpp | io | manip
 
 
Biblioteca de E/S
Manipuladores de E/S
E/S estilo C
Búferes
(en desuso en C++98)
Flujos
Abstracciones
E/S de archivos
E/S de cadenas
E/S de arrays
(en desuso en C++98)
(en desuso en C++98)
(en desuso en C++98)
Salida sincronizada
Tipos
Interfaz de categoría de error
(C++11)
 
Manipuladores de E/S
Formateo de punto flotante
Formateo de enteros
Formateo de booleanos
Control de ancho de campo y relleno
Otro formateo
Procesamiento de espacio en blanco
Vaciado de salida
(C++20)  

Manipulación de indicadores de estado
E/S de tiempo y dinero
(C++11)
(C++11)
(C++11)
(C++11)
Manipulación entre comillas
(C++14)
 
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 si eofbit ya está establecido en is antes de la llamada a ws, en cuyo caso la construcción del objeto centinela establecería failbit).
  • 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.

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) [editar]