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

标签 c++ eof

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

同时 (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/

相关文章:

c++ - 最易于使用、轻量级、独立于平台的 C++ 图形库

c++ - 全局变量不好吗?

c++ - 使用 Directx 9 的屏幕空间反射

python - 使用python pty伪终端进程发送命令并退出

c - 没有正确读取标准输入

sql - 'select'缺少EOF错误

c++ - 为什么 std::unordered_map 很慢,我可以更有效地使用它来缓解这种情况吗?

c++ - std::vector<std::vector<T>> 的迭代器有效性

python-2.7 - 尝试通过 Popen() 使用 Python 发送 EOF 信号(Ctrl+D)信号

java - EOF 同时寻找匹配 `"' 错误