This question already has answers here:
Why is iostream::eof inside a loop condition (i.e. `while (!stream.eof())`) considered wrong?
(4个答案)
6年前关闭。
所以我正在使用while循环将数据从文本文件读入 vector 。
最初,我以这种方式设置了代码:
-但这引起了一个小问题,由于某种原因,它在文本文件的最后一项中读取了两次。
但是,如果我以这种方式设置了代码,那么一切都会很好:
为什么第一个代码在最后一个项目中读取两次?
(4个答案)
6年前关闭。
所以我正在使用while循环将数据从文本文件读入 vector 。
最初,我以这种方式设置了代码:
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
}
为什么第一个代码在最后一个项目中读取两次?
最佳答案
看来data
结构未在文件内完全对齐,即,当您的程序尝试读取最后一个片段时,它尚未到达文件末尾,但是没有足够的数据可读取。因此infile >> data
失败,这意味着data
的内容未更改,因此您将其再次添加到 vector 中。
在第二种情况下,您将检查读取结果,因此,如果未正确读取data
内容,则不会尝试将其推送。
关于c++ - 使用while循环从文本文件中读取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22899215/