ifstream의 get() 함수를 사용하여 파일의 문자를 읽을 때 오류가 발생했습니다.
진짜 이유는 여기 eof()에 있습니다. 파일 포인터가 파일 끝에 도달하면 eof를 실행하면 즉시 true가 반환되지 않고 다음 읽기까지 기다립니다. 즉, eof는 get()을 다시 실행한 후에만 true를 반환합니다. 이때 ifstream 스트림의 상태는 failed로 표시되고 get은 아무것도 읽지 않았으므로 c는 마지막으로 읽은 데이터를 저장하므로 마지막 문자가 두 번 표시됩니다.
해결책: 코드를 수정하고 eof()와 failure()를 결합하여 파일의 끝을 확인합니다.
ifstream fin("input.txt");
while(!fin.eof()){
char c;
fin.get(c);
if(fin.fail()) break;//파일의 끝이면 c가 출력되기 전에 점프합니다.
cout < }