STL/string
cin(문자, 문자열 입력) vs getline(문자열 입력)
워니-
2020. 1. 13. 15:27
차이점
- 'cin'은 'white space' 전까지만, 'getline'은 'white space' 까지 입력을 받는다. (둘다 '\n(엔터)' 만나면 종료)
- 'cin'은 처음으로 들어오는 'white space' 입력은 무시하고, 이후의 입력을 받는다.
- 'getline'은 처음으로 들어오는 'white space' 입력을 받는다. (입력을 받지만 '\n'(엔터) 같은 경우에는 저장 X)
Ex)
입력이 a b c d '\n' e f '\n' g '\n' 이라고 하면,
cin >> first;
// first에 a b c d 저장 -> '\n' e f '\n' g '\n' 남음 -> 1번 조건에 의해서 '\n' 입력 무시
cin >> second;
// second에 e f 저장 -> '\n' g '\n' 남음 -> 2번 조건에 의해서 맨 앞의 '\n' 입력 무시
getline(cin, third);
// third가 '\n' 입력 받지만 저장 X -> g '\n' 남음 -> 3번 조건에 의해서 맨 앞의 '\n' 입력 받음
해결법
- 'cin'과 'getline' 사이에 cin.ignore()를 선언하여 \n 제거
- 'cin'과 'getline' 사이에 string buffer, getline(cin, buffer) 를 선언하여 \n 제거