2014-02-24 3 views
0

std :: ifstream에서 이상한 동작을 발견했습니다 (아니면 제대로 사용하는 방법이 누락되었습니다).심볼이 ifstream에서 두 번 읽음

1 34 567 3 

프로그램 출력 :

#include <iostream> 
#include <fstream> 

int main(int argc, char** argv) { 

     std::ifstream file; 
     file.open(argv[1]); 

     while(not file.eof()) { 
       int x; 
       file >> x; 
       std::cout << x << std::endl; 
     } 

     return 0; 
} 

는 I는 다음과 같은 공간에 의해 분리 된 번호를 포함하는 파일을 호출

1 
34 
567 
3 
3 

마지막 I는 다음의 프로그램이 번호는 항상 중복됩니다. 나는 그것이 마지막 숫자를 읽은 후에 EOF에 도달하지 못했기 때문에 그것은 텍스트 파일의 필수 \ n에 도달하고, 다음 파일 >> x는 나에게 마지막으로 읽은 숫자를 다시 준다.

읽을 번호가 더 이상 없다는 것을 올바르게 감지 할 수 있습니까?

답변

1

시도하십시오 :

int x; 
    while(file >> x;) { 
     std::cout << x << std::endl; 
     } 

을이 당신을 도울 것입니다 Please go through this.

희망을 더 잘 이해하십시오.