为什么如果我从键盘输入 EOF Clion 不在 运行 window 上打印程序的输出?

Why if I input EOF from keyboard Clion don't print on Run window the output of the program?

我刚开始使用 Clion 作为我的 IDE,我正在努力处理从键盘输入的 EOF。 如果我执行这个简单的 C++ 代码

 #include <iostream>

int main(){
    int sum = 0, value = 0;
    //read until EOF, calculating a running total of all values read
    while(std::cin >> value){
        sum += value;
    }
    std::cout << "Sum is " << sum << std::endl;
    return 0;
}

在Clion的运行 window中,我从键盘输入后 1 2 cmd+d 我明白了

1 2 ^D

Process finished with exit code 0

在某些环境中,EOF 仿真是使用 Ctrl+Z 组合而不是 Ctrl+D 执行的

为避免此类问题 - 创建包含您要输入“1 2”的内容的文件

和 运行 您的程序从终端重定向标准输入以从文件中读取。在这种情况下,EOF 事件将始终发生在输入结束时。

$./test < myinputfile.txt

这是一些 known issue 与 Windows 上的 CLion。在注册表中禁用 run.processes.with.pty(通过查找操作打开)通常会有所帮助。

在 MacOS 中,EOF(带键盘)是 Cmd+D。
在 CLion 中可设置于:

File -> Preferences -> KeyMap -> search EOF and set Cmd+D.


但是,我建议您在代码中使用 终止字符,例如在 this 情况下不会改变结果的零。

Example of execution in CLion