std::skipws / std::noskipws

std::skipws / std::noskipws (공백 건너뛰기 조작자)

형식화 입력 함수가 선행 공백을 건너뛰는 것(기본으로 켜짐)을 켜거나 끄는 조작자예요. 출력에는 영향이 없어요.

출처: cppreference

본문

<ios> 헤더에 정의돼 있어요.

// (1)
std::ios_base& skipws( std::ios_base& str );

// (2)
std::ios_base& noskipws( std::ios_base& str );

형식화 입력 함수가 선행 공백을 건너뛰는 것(기본으로 켜짐)을 켜거나 끕니다. 출력에는 영향이 없어요.

    1. str.setf(std::ios_base::skipws)처럼 skipws 플래그를 켜요.
    1. str.unsetf(std::ios_base::skipws)처럼 skipws 플래그를 꺼요.

공백 건너뛰기는 std::basic_istream::sentry의 생성자가 수행하는데, skipws가 켜져 있으면 공백을 읽어 버려요.

예제

#include <iostream>
#include <sstream>

int main()
{
    std::istringstream s("  x");
    char c;
    s >> std::noskipws >> c;   // 공백 ' ' 을 읽음
    std::cout << (c == ' ' ? "space" : "other") << '\n'; // "space"
    s >> std::skipws >> c;      // 공백 건너뛰고 'x'
    std::cout << c << '\n';     // "x"
}

더 알아보기 (Learn more)

cppreference