2011-06-28 106 views
0

我正在嘗試從C++文件中讀取單詞列表。但是,最後一個字被讀取兩次。我不明白爲什麼是這樣。有人可以幫我嗎?在C++中讀取文件

int main() { 

ifstream fin, finn; 
vector<string> vin; 
vector<string> typo; 
string word; 
fin.open("F:\\coursework\\pz\\gattaca\\breathanalyzer\\file.in"); 
if (!fin.is_open()) 
    cout<<"Not open\n"; 
while (fin) { 
    fin >> word; 
    cout<<word<<endl; 
    vin.push_back(word); 
} 
fin.close(); 
} 
+0

== Accept,接受點擊最佳答案下右標記(後20分鐘你問) – iammilind

回答

2

你需要做的:

while((fin >> word).good()) { 
    vin.push_back(word); 
} 

因爲fin >> word失敗,你不檢查它。

4

你的循環狀態是關閉的一個:

while (fin >> word) { 
    cout<<word<<endl; 
    vin.push_back(word); 
} 
1

它不會被讀兩次。這僅僅是舊值,因爲fin >> word失敗。 使用

while(fin >> word) 
{ 
    ... 
} 

代替。 它嘗試讀取並停止循環,如果失敗。