2014-02-24 45 views
0

我發現了一個奇怪的行爲與std :: ifstream(或更可能我錯過了如何正確使用它)。我有以下程序:從ifstream讀取兩次的符號

#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; 
} 

我把它放在第一個包含用空格分隔的數字文件,如下所示:

1 34 567 3 

程序輸出:

1 
34 
567 
3 
3 

最後號碼總是被複制。我想這是因爲它在讀完最後一個數字後沒有達到EOF,它達到了文本文件的強制性'\ n',並且下一個文件>> x再次給了我最後一個讀取的數字。

我該如何正確地檢測到沒有更多的數字要讀取?

回答

1

請嘗試:

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

爲了更好地理解Please go through this.

希望這會幫助你。