我的数据文件末尾有额外的空行。这导致读取数据线时出现问题。我正在使用:
while(datFile.good())
但.eof()也不起作用。
有什么建议吗?
while (datFile.good())
{
getline (datFile, line);
istringstream liness(line);
int z = 0;
while (z <= index)
{
while (liness >> temp)
{
if (z == 0)
{
values[0].push_back(atof(temp.c_str()));
}
if (z == index)
{
values[1].push_back(atof(temp.c_str()));
}
cout << temp << endl;
z++;
}
}
}
答案 0 :(得分:2)
在阅读之后,你应该使用流的状态!
您没有发布足够的代码来告诉,但输入总是看起来像这样:
while (in >> data) {
process(data);
}
无论您使用格式化输入还是未格式化输入都无关紧要。此外,good()
通常不是有用的aabd eof()
仅对抑制错误消息有用:如果您读取失败,则可能因为您读取了所有数据而失败。确定读取是否成功绝不是一个有用的条件:虽然读取成功,但eof()
可以产生true
。
答案 1 :(得分:2)
while (getline (datFile, line))
{
istringstream liness(line);
// the rest of the loop is unchanged.
...
}