所以我正在使用while循环将文本文件中的数据读入矢量。
最初我设置了这样的代码:
iftream infile;
while(infile) // or even if i do while(!infile.eof())
{
infile>>data;
vector1.push_back(data); //adding data in to the vector
}
- 但由于某种原因,这导致了一个小问题,即它在文本文件的最后一项中读取了两次。
但如果我以这种方式设置代码,一切正常:
iftream infile;
while(infile>>data)
{
vector1.push_back(data); //adding data in to the vector
}
为什么第一个代码会在最后一个项目中读取两次?
答案 0 :(得分:3)
看起来你的data
结构在文件中没有完全对齐,即当你的程序试图读取最后一个片段时,它还没有到达文件末尾,但是没有足够的数据阅读。因此infile >> data
失败,这意味着data
的内容尚未更改,因此您再次将其添加到您的向量中。
在第二种情况下,您检查读取的结果,因此在未正确读取时不会尝试推送data
内容。