【问题标题】:how to resolve infinite loop caused by getline at the end of a file (c++)如何解决由文件末尾的getline引起的无限循环(c ++)
【发布时间】:2016-01-20 05:20:54
【问题描述】:

因此,在我读入 C++ 程序的文本文件后,当我使用 getline 读入文件的最后一行时,它会进入无限循环。现在我知道在堆栈溢出之前已经问过这个问题,但我的问题是我不应该使用 .eof 或任何与 ifstream 库相关的东西,我检查过的所有答案都包含这些内容。

如何在不使用 .eof 或 中的任何内容的情况下向我的程序发出文件已到达末尾的信号,以便防止这种无限循环?

【问题讨论】:

  • 请粘贴代码。
  • @Jagannath 我的程序是针对学校项目的,如果我的代码在网上被发现,我可能会面临纪律处分,所以我不想这样做。不这样做是否可以诊断问题?
  • 我的代码也到处都是,跨越 500 行,所以它可能不是最好的选择。
  • 哪些答案包含 eof?
  • 提供MCVE

标签: c++ ifstream getline


【解决方案1】:

您只需要在布尔上下文中检查流,这将确定流是否处于故障状态。由于getline 返回流本身,因此您只需检查其结果即可。

while (std::getline(FileStream, Line)) {
    // process line
}

【讨论】:

  • 问题是我没有使用文件流开始。我正在通过命令行使用输入/输出重定向(我使用 Xcode)并使用 getenv(环境)函数读取我目录中的测试文件
  • @user5482356:然后将FileStream替换为std::cin
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 2018-02-20
  • 2015-03-23
  • 1970-01-01
  • 2012-06-03
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多