【问题标题】:Break if any key is pressed c++如果按下任何键,则中断c ++
【发布时间】:2016-11-18 09:22:59
【问题描述】:

如果用户在睡眠(毫秒)期间按下任何键,我想打破 while 循环,就像在这些毫秒内按下任何键时停止一样。我怎么做? 循环如下所示:

while (1)
{
    r = rand() % 5501 + 1000;
    Sleep(r);
    cout << "NOW!\n";
    t = clock() / 1000;
    system("pause");
    if (clock() / 1000 < t + 1)
    {
        cnt++;
        cout << "Aaaaand...\n";
    }
    else break;
}

平台:Windows

【问题讨论】:

标签: c++


【解决方案1】:

没有 C++ 语言解决方案可以做到这一点。

您必须找到一个特定于平台的函数,该函数会等待直到有可用的输入并超时。调用该函数而不是 Sleep(这也不是 C++ 函数)。从该函数返回时,请检查返回代码是否因为有可用输入(用户按下某个键)或超时(用户未按下某个键)而返回。

【讨论】:

    【解决方案2】:

    您可以使用kbhit()。试试这个:

    bool exit = false;
    while(!exit){
        if(kbhit())
             exit = true;
    }
    

    如果您使用的是 Windows,这将起作用。如果您使用的是 linux,您还可以从 http://linux-sxs.org/programming/kbhit.html 复制粘贴 kbhit.h y kbhit.cpp 并将其添加到您的项目中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2016-11-29
      • 1970-01-01
      相关资源
      最近更新 更多