您好,我目前正在编写程序,但我在阅读文件方面遇到了问题。它似乎已经两次读取最后一行,结果两次产生相同的结果。
我已经把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
我真的想知道为什么它两次读到最后一行。有什么建议吗?
答案 0 :(得分:1)
while(!file.eof())
{
file >> body;
bodies.push_back(body);
}
在阅读body
中的最后一个对象后,eof
是下一个字符。然后
file >> body;
尝试阅读,失败。所以之前body
中的任何内容仍然存在,并且会被推送到向量中。
相反,你应该读
while(file >> body)
{
bodies.push_back(body);
}
这样一旦你遇到eof()
,你的同时就会停止,你就不会额外推进向量。