EOF(End of File)란 무엇인가?
오늘은 EOF에 대해서 알아볼 예정입니다.
EOF는 End of File의 약자로 파일의 끝 또는 종료를 나타냅니다.
프로그래밍에서 파일 입출력을 처리할 때, 파일의 끝에 도달했음을 알리는 신호로 사용됩니다. 즉, EOF는 파일 스트림에서 더 이상 읽을 데이터가 없음을 의미합니다.
c++에서는 다음과 같은 방법으로 EOF를 확인할 수 있습니다.
1. std::ifstream::eof()
‘std::ifstream’ 클래스의 eof() 멤버 함수를 사용하여 파일 끝에 도달했는지 확인할 수 있습니다.
fstream, 파일 스트림은 기본적인 istream이나 ostream 클래스보다 지원하는 기능이 더 많기 때문에 이를 상속 받아서 작성되었으며, 각각을 상속 받은 것이 ifstream과 ofstream입니다. 이들 클래스를 모두 포함하는 라이브러리로 fstream을 사용하면 됩니다.
‘std::ifstream.eof()’는 파일의 끝에 도달하면 ‘true’를 반환합니다.
2. std::cin.eof()
std::cin.eof()는 eofbit를 검사해서 마지막 입력값에 도달하는 경우 ‘true’를, 그렇지 않으면 ‘false’를 반환합니다.
3. std::istream::operator bool 사용
파일 스트림은 조건문에서 사용할 수 있도록 변환 연산자를 제공합니다.
이를 통해 파일 끝에 도달했는지 쉽게 확인할 수 있습니다.
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream file("example.txt");
if (!file.is_open()) {
std::cerr << "파일을 열 수 없습니다." << std::endl;
return 1;
}
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
if (!file) { // 파일 스트림의 상태를 확인
if (file.eof()) {
std::cout << "파일 끝에 도달했습니다." << std::endl;
} else {
std::cout << "파일을 읽는 중에 오류가 발생했습니다." << std::endl;
}
}
file.close();
return 0;
}
여기서 !file은 파일 스트림에 오류가 있는지 확인하기 위한 조건문입니다. 오류가 있으면 ‘true’가 됩니다.
이때 파일 끝에 도달한 경우(EOF인 경우)도 포함됩니다. 따라서 EOF인 경우에는 파일 끝에 도달했다는 결과를 출력합니다.
Reference
https://heestory0324.tistory.com/10
https://velog.io/@c-jeongyyun/CPP-EOF-%ED%8C%90%EB%8B%A8%ED%95%98%EA%B8%B0