열기 결과를 검사한다
ifstream 생성 뒤 바로 상태를 확인해 파일 없음과 권한 문제를 조기에 분리한다.
파일을 열었다는 사실과 모든 줄을 올바르게 읽었다는 사실은 다르다. open 실패, parse 실패, EOF를 구분해야 데이터 손상이 조용히 지나가지 않는다.
ifstream 생성 뒤 바로 상태를 확인해 파일 없음과 권한 문제를 조기에 분리한다.
공백 단위 토큰이면 >>, 줄 전체가 의미 있으면 getline을 사용한다.
몇 번째 줄에서 어떤 값이 실패했는지 남기면 데이터 오류를 재현하기 쉽다.
std::ifstream in(path);
if (!in) throw std::runtime_error("cannot open file");
for (std::string line; std::getline(in, line); ) {
parse_line(line);
}