getline()의 디폴트 구분자는 '\n'(개행문자)입니다.
아시다시피 cin 사용(15행) 후 정수는 N에 저장 되지만, 입력 버퍼에 '\n'은 그대로 남아 있죠.
따라서 첫 실행된 getline()은 입력 버퍼에 진입 했다가 저 '\n'문자를 보고 (구분자인 개행문자를 없애며)곧바로 종료 됩니다.
즉, 정작 제대로 된 문자열 입력은 두 번째 getline()부터 시작되는 것이죠.
결과적으로 작성하신 것처럼 혼용하실 경우, cin.ignore()을 사용해 '\n'을 미리 없애주어야 합니다.(16행에 추가)
yg04076 1년 전 1
그냥 cin>>string으로 받으면 N번 돌면 마지막까지 출력이 다 되는데
이상하게 getline으로 입력을 받으면 for 1번 덜 도네요... 왜 그런가요?
N+1돌리는 방법 말고 getline으로 더 깔끔하게 푸는 방법은 없을까요?