
EOF(End-of-File)만 어떻게 처리하는 지 알면 풀 수 있는 문제이다.
C++에서는 cin.eof()로 eof를 판단하는데, 입력의 끝이면 true, 아니면 false를 반환한다.
마지막 문자를 읽고, 다시 한 번 더 읽었을 때 true가 반환된다.
우리는 입력값의 길이를 모른다!
char a;
while(!( cin >> a ).eof()){
cout << a;
}
요렇게 하면 된다. 마지막 문자를 읽었을 때 더이상 없으면 cin.eof()에서 true가 반환되고, ! 때문에 조건문을 탈출하게 된다
더 간단하게는?
char a;
while(cin >> a) {
cout << a;
}
스트림 연산을 한 뒤에는 스트림 객체를 반환한다. (그래서 (cin>>a).eof()같은 연산이 가능했던 것이다. == cin>>a를 하고 나면 정상상태일 때 cin이 반환돼서 결국 cin.eof()가 됨)
BUT! 스트림 연산이 조건문에 들어가면, 스트림 객체가 아니라 bool타입을 반환한다. 스트림이 정상상태일 때 True
EOF에 도달하면 false가 반환되는 것!
그래서 간결하게 나타낼 수 있는 것이다.
생각
eof만 알면, 다끝난다
#include <iostream>
using namespace std;
int main() {
int a,b;
while(cin >> a >> b){
cout << a+b << '\n';
a = 0;
b = 0;
}
return 0;
}'공부기록 > [Algorithm]' 카테고리의 다른 글
| 백준 2675번 <문자열 반복> - C++ (3) | 2024.08.03 |
|---|---|
| 백준 10811번 <바구니 뒤집기> - C++ (1) | 2024.08.02 |
| 백준 10810번 <공 넣기> - C++ (0) | 2024.08.02 |
| 백준 2884번 <알람 시계> - C++ (1) | 2024.08.01 |
| 백준 2588번 <곱셈> - C++ (1) | 2024.08.01 |