【发布时间】:2020-02-22 23:26:43
【问题描述】:
我正在运行我的代码并通过 .txt 文件 (./a.out<input.txt ) 提供输入,但它似乎无法识别文件结尾。
当我在 ubuntu 中复制内容时,它可以工作。我认为文件是在 MAC 中创建的。
EOF 就像终端中的 CTRL+C 一样,因此它应该停止执行代码,但最后一个命令不断地被解析为输入。我无法更改文件(它是测试文件,格式不可更改。)。谁能帮我解决这个问题? 我附上了我的代码,但我认为这是文件问题。
编辑:我找到了解决方案。通过添加
if(!getline(cin, s)){
break;
}
或类似的线路,问题将得到解决!
【问题讨论】:
-
产生您的问题的minimal reproducible example 属于您的问题。我没有看到任何 c++ 代码,所以很难告诉你它可能有什么问题。
-
首先,这在很大程度上取决于您使用的终端。传统上,Control-C 发送 SIGINT 或 SIGTERM(查一下,我太懒了 ATM)。触发 EOF 是相当的 Control-D。
-
我添加了我的整个代码。但我认为这与文件格式有关。正如我在复制ubuntu文本文件中的内容时提到的,没有问题。
-
在我使用的终端中,CTRL+C强制代码停止运行。
-
@Maryam 所以你看,你有很多与问题无关的代码。请创建一个最小可重现的示例。
标签: c++ c++11 ubuntu terminal eof