우리는 지금까지
cout << "Hello World!";
이런 구문들을 많이 이용해왔다. 이것은 사실 ostream에 오버로딩돼있던 '삽입 연산자'이다. 삽입 연산자는 int나 double같은 C++의 모든 기본 데이터형들을 인식할 수 있도록 오버로딩돼있다. 아마 원형은 이런 꼴일 것이다.
ostream& operator<<(데이터형);
리턴형이 참조이기 때문에 다음과 같이 연결되는 출력도 가능한 것이다.
cout << "내 나이가 벌써" << age << "입니다.";
이전에 버퍼 비우기는 버퍼를 채운 다음에 일어난다고 했다. 하지만 다른 경우도 있다. 예를 들어 개행 문자를 보내면 버퍼를 비운다. "아무 키나 누르면 계속됩니다." 단지 이런 문장을 위해 512바이트를 채울 필요는 없지 않은가. 또한 긴급할 때도 비운다.
cout << "하나의 수를 입력하시오: ";
float num;
cin >> num;
예를 들어 이런 경우에 문구가 안 뜬다면 무한정 기다려야 할 것이다. 그래서 이런 경우는 바로 출력을 해준다.
만약 사용하는 컴파일러가 원하는 때에 출력을 안 해준다? 여기 당신을 위해 강제로 출력해주는 두 개의 조정자가 있다. flush 조정자는 버퍼를 비운다. endl 조정자는 버퍼를 비우고 개행 문자를 삽입한다.
cout << "안녕하십니까? flush입니다." << flush;
cout << "안녕하십니까? endl입니다." << endl;
그외에 setprecision()이나 setfill() 등등도 나왔지만 이건 아직은 생략...