输入文件读取错误

Input file reading error

本文关键字:取错误 读取 文件 输入      更新时间:2023-10-16

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

我使用了getline()函数来读取第一行,以便存储变量G的字符串。其余部分,我将其存储在类对象的vector中。

基本上文件被打开并执行这个循环

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

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

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

将最后一个对象读入body后,eof是下一个字符。

file >> body;

尝试读取,失败。所以之前在body中的东西仍然在那里,并将被推入向量。


你应该读成

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

这样,当您遇到eof()时,while就会停止,并且您将不会对向量进行额外的push。