gpt4 book ai didi

c++ - 文件末尾的空格导致 C++ 中的 EOF 检查失败

转载 作者:行者123 更新时间:2023-11-30 01:00:58 24 4
gpt4 key购买 nike

我正在从一个包含三列的文件中读取数据。例如,数据将类似于:

3  START  RED
4 END RED

要读入数据,我使用以下检查:

while (iFile.peek() != EOF) {
// read in column 1
// read in column 2
// read in column 3
}

我的问题是循环通常会执行额外的循环。我很确定这是因为很多文本编辑器似乎在实际内容的最后一行之后放了一个空行。

我做了一些谷歌搜索并在 SO 上搜索,发现了一些类似的情况,例如 Reading from text file until EOF repeats last line但是我似乎不太适应给出的解决方案来解决我的问题。有什么建议吗?

最佳答案

EOF 不是预测而是错误状态。因此,您不能像现在这样使用它来预测您是否可以阅读第 1、2 和 3 列。因此,C++ 中的常见模式是:

while (input >> obj1 >> obj2) {
use(obj1, obj2);
}

所有 operator>>(istream& is, T&) 返回输入流,并且在 bool 上下文中使用时,只要最后一次提取成功,流就是“真”。然后可以安全地使用提取的对象。

关于c++ - 文件末尾的空格导致 C++ 中的 EOF 检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1629297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com