0

嗨,我目前编写了一个程序,但我在读取文件时遇到了问题。结果似乎两次读取了最后一行,两次产生了相同的结果。

我已将 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

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

4

1 回答 1

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

读入 to 中的最后一个对象后bodyeof下一个字符。然后

file >> body;

试图阅读它并失败。所以之前的任何东西body都仍然存在,并将被推入向量中。


相反,您应该阅读

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

这样一来,您的 while 就会停止,eof()并且您不会对向量进行额外的推动。

于 2013-04-30T20:21:55.930 回答