EOF(End of File)

--·2022년 6월 23일
0

Broze 10951

EOF란 (End of File)

입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 ((int)-1)을 반환

*주의 파일의 끝까지 읽었다고 EOF가 되는 것이 아니라 끝까지 읽고난 뒤 그 다음 파일을 읽으려할 때 데이터가 없을 때 EOF가 되는 것!(시점을 정확히 파악해야함.)

첫 시도

#include <iostream>
using namespace std;


int main() {
	int  a, b;
	while (!cin.eof()) {
		cout << a + b << endl;
	}
	return 0;
}

위와 같이 적으면 틀린다

예로 다음과 같이 입출력을 받는다고 가정하자

char val;
while(!cin.eof()) {
	cin >> val;
	cout << val;
}

입력 :
a
b
c
d
출력 :
abcdd가 출력된다


이처럼 EOF이 되면 더이상 내부 스트림 상태를 fail로 두고 val 변수에 값을 저장하지 않는다. 즉, val의 상태는 이전 루프의 값을 갖고있게 되는 것이다.
그렇기 때문에 (cin >> a >> b).eof()방식으로 괄호 안의 cin>>a>>b를 통해 읽은 후 EOF상태인지를 검사한다.

#include <iostream>
using namespace std;


int main() {
	int  a, b;
	while (!(cin>>a>>b).eof()) {
		cout << a + b << endl;
	}
	return 0;
}

0개의 댓글