使用while循环从文本文件中读取数据

时间:2014-04-06 19:57:14

标签: c++

所以我正在使用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
}

为什么第一个代码会在最后一个项目中读取两次?

1 个答案:

答案 0 :(得分:3)

看起来你的data结构在文件中没有完全对齐,即当你的程序试图读取最后一个片段时,它还没有到达文件末尾,但是没有足够的数据阅读。因此infile >> data失败,这意味着data的内容尚未更改,因此您再次将其添加到您的向量中。

在第二种情况下,您检查读取的结果,因此在未正确读取时不会尝试推送data内容。