【问题标题】:How to prevent console output after exiting the program退出程序后如何防止控制台输出
【发布时间】:2011-06-16 14:10:18
【问题描述】:

我正在用 C++ (windows) 编写简单的命令行程序。它的一个功能是检查键盘输入,如果按下某个键,则退出程序。

实际上到目前为止它工作正常,但是当程序退出时,我在命令行的输出中得到了所有按下的键?有没有办法避免这种行为?

提前谢谢...

【问题讨论】:

  • 实际上我想用标准 C++ 或至少用 WIN32 API 来做,所以我认为 getch 不适合。

标签: c++ windows command-line terminal dos


【解决方案1】:

getch 没有回显,这意味着它不会打印您键入的字符。以下是有关 C/C++ 中所有 get char 函数的更多信息:

http://www.daniweb.com/forums/thread37195.html

【讨论】:

    【解决方案2】:

    这取决于您如何检查键盘输入。

    您可能在没有实际使用的情况下检查输入,因此将其留在输入队列中以供下一个能够获取它的程序(命令行)。

    【讨论】:

    • 我使用 GetAsyncKeyState,所以您可能是对的?你能提出一些建议吗?谢谢
    • 如你所知输入上有东西,你可以使用char c; std::cin >> c;
    • 是的,没错,但它仍然会在终端上产生输出。除此之外,它总是等待 RETURN 键,没有它它甚至不会退出程序。
    【解决方案3】:

    您可以使用不应回显字符的 getch()。我不记得定义它的头文件,但我认为它是 conio.h(记住它不是标准头文件)

    【讨论】:

      【解决方案4】:

      使用_kbhit() 测试是否按下了某个键。当它使用_getch() 来获取值时。 (注意 _getch() 可以返回 00xE0 以获得特殊键并再次调用 _getch() 以获得该值)

      【讨论】:

      • 好的,我想没有办法使用标准 C/C++ 以“本机”方式进行操作。你提出的方式,效果很好。非常感谢。
      猜你喜欢
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      相关资源
      最近更新 更多