표준 스트림 동기화
1 | ios_base::sync_with_stdio(bool sync = true); |
C++ 표준 스트림들이 C 표준 스트림들과 각각 입출력 연산 후에 동기화를 할지 여부를 결정할 수 있다. 즉 C++ 스트림이 자신의 버퍼를 사용하지 않고 C 스트림 버퍼를 사용하게 된다. 그렇기 때문에 C의 스트림과 혼합해서 사용이 가능하다.
만약 해당 기능을 비활성화 했을 경우 입출력의 순서가 보장되지 않는다. 또한 동기화된 C++ 스트림은 thread safe하다. 동기화를 설정하지 않았다면 표준 C++ 스트림들은 각각의 입출력 연산에 대해 버퍼를 사용할 수 있고 이 경우 입출력 연산 속도를 크게 향상 시킨다.
스트림 엮기
1 | ostream* tie() const; |
위 함수는 스트림을 엮어준다. 기본적으로 std::cin과 std::cout
을 같이 사용했을 때 입출력이 제대로 이루어지는것 처럼 보이는 이유는 cin과 cout이 tie되어 있고 이에 따라 암묵적으로 buffer를 flush해주기 때문이다. 이 tie를 풀어버리게 되면 cin을 통해 사용자가 입력을 할 수 있지만 cout은 보이지 않는다. cout은 버퍼가 가득 찼을 경우에만 보여지게 된다.