Flush에 대해서
I/O에서 Flush의 역할
개념
flush : 스트림을 비운다는 의미
우리가 키보드에 글자를 입력하면 모니터에 표시되기 전에 입력 버퍼에 잠시 보관된다.
flush는 버퍼에 있는 (표준입력장치{키보드}에 의해 입력받은)데이터들을 (알반적으로는 모니터 화면)출력방향으로 밀어넣는 것이다.
이 작업은 굉장히 큰 비용이 든다. 따라서 최대한 flush를 적게 할수록 좋은 효율을 보인다.
** cout뒤에 일반적으로 붙이는 endl는 flush하는 동시에 개행을 진행한다. 즉 매우 느리다. ** 반면에 \n는 그냥 개행만해서 효율이 좋다. 참고할 것.
추가 내용
canf(), getchar() 함수를 통해서 문자를 입력받을 때에는 getch()나 getche()와 달리 문자 뒤에 Enter를 쳐야 입력이 종료된다.
Enter를 치면 키보드 버퍼에 입력된 문자들은 함수로 전달이 되지만 마지막에 넘어온 Enter는 키 버퍼에 남아있다.
연이어 입력을 받게 되는 경우에는 문제가 발생할 수 있다.
다음 코드를 통해서 flush가 쓰이는 용례를 확인할 수 있다.