首页 > 解决方案 > 通过终端在文件中输入时检测 EOF(文件结尾)的问题

问题描述

我正在运行我的代码并通过 .txt 文件(./a.out<input.txt)提供输入,但它似乎无法识别文件结尾。

当我在 ubuntu 中复制内容时,它可以工作。我认为这些文件是在 MAC 中创建的。

EOF 就像终端中的 CTRL+C 一样,因此它应该停止执行代码,但最后一个命令不断地被解析为输入。我无法更改文件(它是测试文件,格式不可更改。)。谁能帮我解决这个问题?我附上了我的代码,但我认为这是文件问题。

编辑:我找到了解决方案。通过添加

if(!getline(cin, s)){
   break;
}

或类似的线路,问题将得到解决!

标签: c++c++11ubuntuterminaleof

解决方案


我找到了解决方案。通过添加

if(!getline(cin, s)){
   break;
}

或类似的线路,问题将得到解决!


推荐阅读