输入文件读取错误

时间:2013-04-30 20:17:30

标签: c++

您好,我目前正在编写程序,但我在阅读文件方面遇到了问题。它似乎已经两次读取最后一行,结果两次产生相同的结果。

我已经把getline()函数读取第一行,以便存储变量G的字符串。 其余的,我把它存储在类对象的向量中。

基本上打开文件并执行此循环

file.open("bodies1.txt");
getline(file, G1);
....


while(!file.eof)
{
  file >> body;
  bodies.push_back(body);
}

这就是文本文件的样子(这只是一个样本。而不是实际的东西)

0.02932
Sun 32 42 53 2 2
Moon 49 32 4 2 1
Jupiter 32 53 2 3 2

我真的想知道为什么它两次读到最后一行。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

while(!file.eof())
{
  file >> body;
  bodies.push_back(body);
}

在阅读body中的最后一个对象后,eof下一个字符。然后

file >> body;

尝试阅读,失败。所以之前body中的任何内容仍然存在,并且会被推送到向量中。


相反,你应该读

while(file >> body)
{
  bodies.push_back(body);
}

这样一旦你遇到eof(),你的同时就会停止,你就不会额外推进向量。