Namespaces
Variants

std:: ws

From cppreference.net
< cpp ‎ | io ‎ | manip
Определено в заголовочном файле <istream>
template < class CharT, class Traits >
std:: basic_istream < CharT, Traits > & ws ( std:: basic_istream < CharT, Traits > & is ) ;

Отбрасывает ведущие пробельные символы из входного потока.

Ведут себя как UnformattedInputFunction , за исключением того, что is. gcount ( ) не изменяется. После создания и проверки сторожевого объекта извлекает символы из потока и отбрасывает их до тех пор, пока не выполнится любое из следующих условий:

  • условие конца файла возникает во входной последовательности (в этом случае функция вызывает setstate ( eofbit ) но не устанавливает failbit ; это не применяется, если eofbit уже установлен в is до вызова ws , в этом случае создание объекта sentry установит failbit ).
  • следующий доступный символ c во входной последовательности не является пробельным, как определено std:: isspace ( c, is. getloc ( ) ) . Непробельный символ не извлекается.

Это манипулятор ввода-вывода только для ввода, он может быть вызван выражением вида in >> std :: ws для любого in типа std::basic_istream .

Содержание

Параметры

является - ссылкой на входной поток

Возвращаемое значение

is (ссылка на поток после извлечения последовательных пробельных символов).

Примечания

Если eofbit установлен в потоке до вызова, конструирование объекта sentry установит failbit .

Пример

#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';
    }
}

Вывод:

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"

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 415 C++98 calling std::ws might not construct the sentry
object (insonsistent with other input functions)
required to construct
the sentry object

Смотрите также

извлекает и отбрасывает символы до тех пор, пока не будет найден заданный символ
(публичная функция-член std::basic_istream<CharT,Traits> )