【问题标题】:How do you send an input into a continuous loop? (C++)如何将输入发送到连续循环中? (C++)
【发布时间】:2010-12-15 12:13:12
【问题描述】:

我有一个问题,假设我有一个连续的 while 循环,里面有一个变量 x 用于某些计算。如何在不停止 C++ 循环的情况下从键盘向循环发送输入以更改循环内的变量 x? 谢谢

【问题讨论】:

  • 您想要非阻塞键盘输入。我认为这非常依赖于操作系统,因此您应该指定您使用的平台。
  • 你不能只检查某种键盘缓冲区,或者中断你的循环吗?

标签: c++ loops while-loop


【解决方案1】:

你最好的选择可能是多线程,第二个线程可以等待键盘。

查看 boost/c++ 的实现细节: http://www.boost.org/doc/libs/1_43_0/doc/html/thread.html

【讨论】:

    【解决方案2】:

    如果您运行的是 linux,那么最好的选择是使用 ncursesS-lang 库也被一些人使用,但我没有使用它的经验。不需要多线程。

    【讨论】:

    • 但是信号呢?我不能使用信号来更改已经运行的循环中的变量吗?
    • 当然,您可以使用 SIGALRM 来轮询键盘,但为什么不直接从循环中轮询键盘呢?
    【解决方案3】:

    如果你在 Windows 中,你可以使用GetAsyncKeyState。 (见:http://msdn.microsoft.com/en-us/library/ms646293(v=vs.85).aspx)。但是,如果您不是,这将不起作用(显然):)

    【讨论】:

      【解决方案4】:

      如果是用户软件,我会选择 smichaud 提到的多线程方法。如果它是一个工具(并且性能不是问题),您可以连续读取文件并从外部更改该文件,因为这是最简单的实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 2011-10-02
        相关资源
        最近更新 更多