我的数据文件末尾有额外的空行。这会导致读取数据线时出现问题。我正在使用:
同时 (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++;
}
}
}
最佳答案
你应该在阅读后使用流的状态!
您没有发布足够的代码来说明,但输入总是看起来像这样:
while (in >> data) {
process(data);
}
无论您使用格式化输入还是未格式化输入都无关紧要。此外,good()
通常不是那么有用 aabd eof()
仅对抑制错误消息有用:如果您读取失败,它失败可能是正常的,因为您读取所有数据。确定读取是否成功从来都不是一个有用的条件:尽管读取成功,eof()
可以产生 true
。
关于带有额外空行的 C++ 数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132901/