Espacios de nombres
Variantes
Acciones

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
ws
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.

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