std::unitbuf / std::nounitbuf

std::unitbuf / std::nounitbuf (자동 flush 조작자)

출력 스트림의 자동 flush를 켜거나 끄는 조작자예요. 입력에는 영향이 없어요.

출처: cppreference

본문

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

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

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

출력 연산 후 출력 스트림의 자동 flush를 켜거나 끕니다. 입력에는 영향이 없어요.

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

I/O 조작자라 std::basic_ostream 타입의 out에 대해 out << std::unitbuf처럼 쓸 수 있어요. std::cerr은 기본적으로 unitbuf가 설정돼요.

예제

#include <iostream>
#include <chrono>
#include <thread>

int main()
{
    std::cout << std::unitbuf;  // 이후 모든 출력은 즉시 flush
    std::cout << "진행 1";
    std::this_thread::sleep_for(std::chrono::seconds(1));
    std::cout << " 진행 2";
    std::cout << std::nounitbuf;
}

더 알아보기 (Learn more)

cppreference