파일 입력 스트림 클래스 이다. ifstream
은 입력 스트림으로 부터 데이터를 읽을 수 있게 해준다. 이 스트림과 파일을 연관(associate)시키기 위해서 생성자에 인자로 파일 이름을 지정하거나, open 함수를 통해서 할 수 있다.
is_open 함수를 통해 현재 스트림 객체가 파일과 연관이 되어 있는지 확인할 수 있다.
다음을 보면 생성자에 인자로 ("numbers")
를 넣어서 numbers 파일
을 입력 스트림으로 연관짖고 있다. 그 후 is_open
을 통해 잘 연결됐는지 확인한다.
std::ifstream ifs("numbers");
if (!ifs.is_open())
{
std::cout << "파일을 열 수가 없습니다!" << std::endl;
exit(1);
}
bool good() const;
스트림이 입출력 작업이 가능한 상태인지 확인한다. 이 함수는 스트림의 오류 상태 플래그(eofbit
, failbit
, badbit
) 가 모두 설정되지 않을 때 true
를 리턴한다.
다음을 보면, ifstream
클래스로 ifs
객체을 만들면서 프로그램의 첫 번째 인자 값으로 들어온 파일을 input file stream
으로 사용하려고 한다.
파일이 input file stream
으로 잘 설정됐는지 확인하기 위해 ifs.good()
함수를 사용한 것을 볼 수 있다.
std::ifstream ifs(av[1]);
if (!ifs.good()) {
std::cout << "Fail to open a file" << std::endl;
exit(1);
}
bool eof() const;
이 함수는 스트림의 eofbit
오류 상태 플래그가 이전의 입출력 작업으로 인해 설정되었을 때 true
를 리턴한다. eofbit
플래그는 입력 작업 중 파일 끝(End Of File) 에 도달하였을 때 설정되는 플래그 이다.
bool bad() const;
이전의 입출력 작업으로 인해 스트림의 오류 상태 플래그인 badbit 가 설정되어 있는지 확인한다. 이 플래그는 입력 작업 중 스트림의 완전성이 손상되었을 때 발생한다. 완전성이 손상되었다는 말은, 한 개의 스트림의 여러개의 입출력 작업이 동시에 일어날 때이다. badbit
이 설정되어 있을 때 true
를 리턴하고 아니면 false
bool fail() const;
failbit
이나 badbit
이 설정되어 있는지 확인한다. 이 함수는 failbit
이나 badbit
중 어느 하나가 설정(set) 되어 있으면 true
를 리턴한다. 이 플래그들은 입력 작업 시 파일 끝(End Of File) 에 도달하기 전에 오류가 발생할 시 설정되는 플래그 들이다.
failbit
은 보통 입력 작업 시 내부적인 논리 오류로 인해 발생되는 오류, 즉, 입력 받기를 기대하였던 값이 오지 않을 때 (파일에 접근할 수 없다던지..) 설정되므로, failbit
이 설정되더라도 스트림의 다른 입출력 작업들은 가능하다.
good 함수
https://modoocode.com/164
eof 함수
https://modoocode.com/167
bad 함수
https://modoocode.com/166
fail 함수
https://modoocode.com/165