토큰 입력과 줄 입력을 섞으면 버퍼 잔여물을 먼저 처리한다
`operator>>`는 공백 앞까지만 읽고, `getline()`은 줄 끝까지 읽습니다. 두 방식을 섞는 순간 버퍼 앞에 남은 문자가 다음 읽기의 출발점이 됩니다.
in >> value토큰 단위 읽기공백 전까지 값을 변환합니다. 숫자, 단어처럼 분리된 데이터를 읽을 때 알맞습니다.getline(in, line)줄 단위 읽기개행 전까지 한 줄 전체를 읽습니다. 이름, 문장, 주소처럼 공백을 포함한 데이터에 알맞습니다.`42\nhello world`를 읽을 때
토큰 읽기 후
42숫자는 변수에 들어가지만 `\n`은 버퍼 앞에 남습니다.바로 getline
""남은 개행을 줄 끝으로 만나 빈 줄을 읽습니다.정리 후 getline
hello world개행을 버린 뒤 원하는 줄부터 읽습니다.버퍼 정리`std::ws` 또는 `ignore()`로 남은 공백과 개행을 처리합니다.
상태 확인변환 실패는 fail, 파일 끝은 eof로 루프 뒤에서 해석합니다.
읽는 단위 통일가능하면 한 루프 안에서 토큰 단위와 줄 단위를 섞지 않습니다.
입력 단위가 바뀌는 지점에서는 “버퍼에 남은 문자”와 “스트림 상태”를 함께 확인합니다.