cin은
- 표준 입력 버퍼에서 개행 문자를 제외한 값을 가져온다.
- 공백이나 개행 입력 시 공백 이전까지의 값만 결과로 받아들인다.
- 개행 문자를 입력 버퍼에 남겨둔다.
문자열을 입력 받을 수 있다.
하지만!
아래와 같은 상황을 보자. 위 코드대로 실행을 하면 n을 입력 받은 후 문자열을 입력받지 않고 바로 다음 코드로 넘어가게 된다. 이유는 버퍼에 정수 값을 입력한 뒤 누른 엔터(‘\n’)가 그대로 남아있어
getline()에 들어가기 때문이다. 이를 해결하기 위해 cin.ignore() 라는 함수를 사용할 수 있다.
위와 같이 변경하면 cin.ingore()가 입력 버퍼의 모든 내용을 제거해주어 getline()이 정상적으로 동작할 수 있다.
추가적으로 cin.ignore() 함수에 대해 알아보자면
cin.ignore(int n, char dlim);
cin.ignore(읽어들일 문자의 개수, 종결 문자);
와 같은 형태로도 사용이 가능하다.
출처 :
'알고리즘' 카테고리의 다른 글
[프로그래머스] 기능개발 (0) | 2021.09.26 |
---|---|
[DFS] 백준 전투 - 1303, 백준 그림 - 1926 (SOS) (0) | 2021.08.12 |
[그리디] 큰 수의 법칙 / [구현] 상하좌우 풀기 전 getline() (0) | 2021.07.14 |
[2021.05 ~ 06 초] 문자열 라이브러리 총집합 (ing) (0) | 2021.05.06 |
[2021.04.08] 스택, 큐 (0) | 2021.04.08 |