추출 연산자 뒤의 getline은 남은 개행부터 본다
`>>`는 필요한 토큰만 꺼내고 줄 끝 개행 문자는 버퍼에 남깁니다. 바로 `getline()`을 호출하면 그 개행을 한 줄의 끝으로 읽어 빈 문자열이 생깁니다.
입력 버퍼 예시
토큰
100`inFile >> id`가 읽어 갑니다.남는 문자
\n숫자 뒤 개행은 버퍼에 남습니다.다음 줄
Alice Wonderland실제로 읽고 싶은 이름입니다.줄 끝
\n다음 레코드로 넘어가는 경계입니다.1
토큰 읽기
inFile >> id숫자 `100`만 꺼내고 개행 문자는 아직 버퍼 맨 앞에 남습니다.
2
바로 줄 읽기
getline(inFile, name)맨 앞의 `\n`을 줄 끝으로 만나 `name`이 빈 문자열이 됩니다.
3
버퍼 정리 후 읽기
ignore(..., '\n')현재 줄의 나머지를 버린 뒤 다음 줄 `Alice Wonderland`부터 읽습니다.
앞 공백 건너뛰기
inFile >> std::ws남아 있는 공백 문자를 건너뛴 뒤 getline을 호출합니다.현재 줄 비우기
ignore(max, '\n')현재 줄의 남은 문자를 버리고 다음 줄부터 읽습니다.토큰 입력과 줄 입력을 섞을 때는 “버퍼 앞에 무엇이 남았는가”를 먼저 확인해야 합니다.