본문 바로가기

컴퓨터

C++ 에서 cin 메소드를 이용해서 문자열을 입력받을 때, 특정 문자를 무시하고 받기 (cin.ignore)

자료 입수 경로 : http://yuihorie.tistory.com/84

다음과 같은 소스코드를 입력하고 컴파일해보자.

실행결과는 다음과 같다.


실행결과를 보면 이 프로그램은 사용자로부터 문자열을 입력받는 프로그램이다.
두 개의 문자열을 입력받게 되어있는데 처음 입력했을 때는 String #1 을 입력하자마자 String #2 는 입력을 받지도 않고 넘어가게 된다.

이것은 문자열 배열에 남아있던 버퍼 메모리 때문이다. 사용자가 마지막에 carrage-return(개행문자)을 입력할 때 메모리 버퍼에 이 값이 남아서 다음 cin 메소드가 이 값을 받아버린 것이다.

따라서 Try again! ........ 메시지가 나타나고 다시한번 두 개의 문자열을 입력받는데, 이 때는 정상적으로 두 문자열을 잘 받는 것을 볼 수 있다.

이렇게 할 수 있는 이유는 String #1 을 입력받을 때 cin.ignore(); 를 사용했기 때문이다. 이는 버퍼에서 특정문자를 무시하게 해주는 함수이다. 소스에는
cin.ignore(10,'\n');
이라고 되어있는데 앞에 10은 최대 10바이트 만큼을 무시하라는 것을 뜻하고, 뒤에 '\n' 은 무시할 문자이다. 여기서는 개행문자가 프로그램의 정상적인 작동을 방해하고 있으므로 개행문자가 오면 무시하라고 명령을 준 것이다.