如果按任何键,则中断c ++

时间:2016-11-18 09:23:00

标签: c++

如果用户在休眠期间按下任何键(毫秒),我想要暂停一个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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

如果您正在使用Windows,这将有效。如果你使用linux,你也可以从http://linux-sxs.org/programming/kbhit.html复制粘贴kbhit.h和kbhit.cpp并将其添加到你的项目中。