차이점
- '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 제거
'STL > string' 카테고리의 다른 글
string 문자열 저장시 널문자 유무 (1) | 2019.09.22 |
---|---|
string 자주 쓰는 멤버함수 정리 + find, reverse 함수 (0) | 2019.09.21 |