带有额外空行的C ++数据文件

时间:2012-02-03 17:33:45

标签: c++ eof

我的数据文件末尾有额外的空行。这导致读取数据线时出现问题。我正在使用:

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++;
            }
        }

    }

2 个答案:

答案 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.
    ...
}