스트림에서 사용하는 버퍼들이 서로 연결되어 있는 것이 있다. 예를 들어, cin이 수행될 때 cout의 버퍼가 비워진다던지 하면 cin과 cout의 스트림은 서로 연결되었다고 할 수 있다. 파일 ios.h를 살펴보면 tie 메소드가 제공되는 것을 볼 수 있다.이 tie 메소드를 이용하면 어떻게 연결되어 있는지 알 수 있다. 예를 들어, cin과  cout 사이가 연결되어 있는지 체크해 보려면 다음과 같이 실행하도록 한다.

 if(*(cin.tie()) == cout)

 만일 연결되어 있다면 if 구문은 참이 될 것이다. tie 메소드로 연결을 확인할 수도 있지만 직접 연결을 시도할 수도 있다. 예를 들어, 버퍼 스트림을 사용한다면 스트림 속의 버퍼가 차야 연산이 수행될 텐데, 이때 다른 스트림과 연결되어 있다면 해당 스트림이 수행될 때 버퍼가 비워질 것이다.

 그러면 아래의 예제를 보자. 아래는 화면 콜솔을 ofstream 으로 설정을 하였고, cin과 tie 메소드를 이용하여 연결을 맺었다.

 // 콘솔을 사용하기 위해 ofstream 설정
ofstream console(“CON”);
// console과 cin을 연결
cin.tie(&console);

 이 상태에서는 다음과 같은 문장을 실행시키면 console에 문장이 들어갈 것이다. 하지만 아직 console에 있는 문장이 화면에 출력되지는 않는다.

 // 콘솔에 문장을 출력
 console << “콘솔에 문장 입력!”;

 이 상태에서 cin과 관련된 작업이 수행되면 console에 있는 버퍼가 비워지면서 화면에 출력이 이루어진다.

cin.get();
console.close(); 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.