Namespaces
Variants

std:: ws

From cppreference.net
< cpp ‎ | io ‎ | manip
Definido en el 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 UnformattedInputFunction , 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 cumpla cualquiera 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 el eofbit ya está establecido en is antes de la llamada a ws , en cuyo caso la construcción del objeto sentry establecería failbit ).
  • el siguiente carácter disponible c en la secuencia de entrada no es un espacio en blanco determinado por std:: isspace ( c, is. getloc ( ) ) . El carácter que no es espacio en blanco no se extrae.

Este es un manipulador de E/S de solo entrada, puede ser llamado con una expresión como in >> std :: ws para cualquier in de tipo std::basic_istream .

Contenidos

Parámetros

es - referencia al flujo de entrada

Valor de retorno

is (referencia al flujo después de la extracción de espacios en blanco consecutivos).

Notas

Si eofbit está establecido en el flujo antes de la llamada, la construcción del objeto sentry 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 returns:\t" << std::quoted(line) << '\n';
        std::istringstream iss{str};
        std::getline(iss >> std::ws, line);
        std::cout << "ws + getline returns:\t" << std::quoted(line) << '\n';
    }
}

Salida:

getline returns:	"     #1 test"
ws + getline returns:	"#1 test"
getline returns:	"	 #2 test"
ws + getline returns:	"#2 test"
getline returns:	"#3 test"
ws + getline returns:	"#3 test"

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 415 C++98 llamar a std::ws podría no construir el objeto
centinela (inconsistente con otras funciones de entrada)
se requiere construir
el objeto centinela

Véase también

extrae y descarta caracteres hasta encontrar el carácter especificado
(función miembro pública de std::basic_istream<CharT,Traits> )