Programming/C++

[C++] EOF 입력받기

aa_rong_blog 2021. 6. 22. 10:22

C 에서는 eof 입력을 보통 다음과 같이 처리했었다.

while (scanf("%d %d", &a, &b) != EOF){ /* code here */ }

 

C++ 에서는 cin 객체와 >> operator 로 입력을 받을 때는 eof 의 입력을 다른 방식으로 처리해 주어야 한다.

while (std::cin >> a >> b) { /* code here */ }

위와 같이 입력 받으면 eof 를 입력받을 시 반복문이 종료된다.

 

cin 은 실제 입력을 수행하는 클래스인 istream 클래스 객체이고, >> operator 는 istream 클래스에 정의되어 있는 연산자이다.

>> operator 는 istream 객체의 값을 추출하여 변수로 넘겨주는 역할을 하고 호출한 자신을 반환한다.

1 2 를 입력하였을 때

cin >> a    -> a 에 1 저장, cin 객체는 2 값을 가짐, >> 은 cin 을 반환.

cin >> b.   -> b 에 2 저장, cin 객체는 NULL 값을 가짐. >> 은 cin 을 반환.

 

 

C++ 에서 eof 를 입력받는 방식은 여러 가지가 있으며 아래와 같은 방식도 가능하다.

while (!std::cin.eof ()){
    std::cin>>a>>b;
}