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를 켜거나 끕니다. 입력에는 영향이 없어요.
-
str.setf(std::ios_base::unitbuf)처럼unitbuf플래그를 켜요.
-
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;
}