首页 > 解决方案 > 按 control+Z 后有没有办法继续输入?

问题描述

场景是我想让用户输入数字,无论他们想要多少次,在他们按下 control+Z 后,他们应该仍然可以输入其他东西。

using namespace std;
int main(){
    int a,b;
    while(cin>>a>>b) cout << a+b<<endl;
    cin >> a;
    cout << a;
}

虽然我知道可以通过让用户输入其他内容来终止循环,但是在按下 control+Z 后是否可以使用输入?

标签: c++iostreamcineof

解决方案


不,没有。关键是 C++ 程序只看到输入字符流,而不是任何按键。当您按下 control-Z(注意:这取决于外壳/终端)时,该流在您的程序外部被切断,因此您的程序内部没有任何东西可以改变它。据我们所知,输入可能来自文件,那么在文件末尾读取的含义是什么?这就像在报纸上阅读最后一页之后的页面。

在某些情况下,您可以使用所谓的 curses 库访问终端并更接近按键。对于不同的环境有很多,但这些东西不是标准 C++ 的一部分。


推荐阅读