我正在尝试用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 :(得分:4)
你的循环条件被一个人关闭:
while (fin >> word) {
cout<<word<<endl;
vin.push_back(word);
}
答案 1 :(得分:2)
你需要这样做:
while((fin >> word).good()) {
vin.push_back(word);
}
因为fin >> word
失败而你没有检查它。
答案 2 :(得分:1)
它没有读过两次。这只是旧值,因为fin >> word
失败了。
使用
while(fin >> word)
{
...
}
代替。 如果失败,它会尝试读取并停止循环。
答案 3 :(得分:0)