如何防止cin的控制台输出

时间:2010-11-19 23:09:52

标签: c++ user-input

如何在C ++中阻止cin打印到控制台屏幕?鉴于这个简单的程序:

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World..." << endl;

    cin.clear();
    cout << "Press ENTER to Continue..." << endl;
    cin.ignore();

    exit(0);
}

因此,如果用户在键盘上卡住,则在按下ENTER之前不会发生任何事情。这当前效果很好,但cin将按键转储到控制台。如何防止此行为?


编辑:我在Visual Studio 2010中工作,我问这个简单的问题,因为我想要的东西不是特定于平台的。

3 个答案:

答案 0 :(得分:5)

在Windows上,您需要SetConsoleMode

没有标准的平台独立方式,当然您可以编写自己的disable_echo()函数并使用#if _WIN32#if __LINUX__来提供与平台无关的接口的特定于平台的实现

答案 1 :(得分:0)

您需要使用termios(3)功能切换ECHO模式。

答案 2 :(得分:0)

无法做到。 C ++,作为一种语言规范,不是关于你的键盘 - 这纯粹是平台的决定,不幸的是,各种平台没有(甚至远程)接近就模糊终端相关的任何规范达成一致。

最好不要担心或依赖它。