【问题标题】:How to prevent console output from cin如何防止来自cin的控制台输出
【发布时间】:2010-11-19 23:09:52
【问题描述】:

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

#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 中工作,我问这个简单的问题是因为我想要一些不特定于平台的东西。

【问题讨论】:

标签: c++ user-input


【解决方案1】:

在 Windows 上,您需要SetConsoleMode

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

【讨论】:

  • 我认为您可以使用getpass() 并为 Linux/UNIX 提供空提示。 manpagez.com/man/3/getpass
  • 我要试试这条路线。谢谢!
  • 在 Unixen 上,Ignacio 提供了一个指向正确方向的指针。 Here is sample code.
【解决方案2】:

您需要使用termios(3) 函数来切换ECHO 模式。

【讨论】:

  • 我不熟悉termios 这个平台是独立的吗?我目前正在使用 Visual Studio 2010。
  • 没有独立于平台的方法。
【解决方案3】:

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

最好不要担心或依赖它。

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多