ifstream buffer

추출 연산자 뒤의 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')현재 줄의 남은 문자를 버리고 다음 줄부터 읽습니다.
토큰 입력과 줄 입력을 섞을 때는 “버퍼 앞에 무엇이 남았는가”를 먼저 확인해야 합니다.