2017-02-16 42 views
0

如果我在Sleep()命令處於活動狀態時輸入內容,我找不到解決此程序退出的解決方案。Sleep()命令處於活動狀態時禁用用戶輸入?

cout<<"Start"<<endl; 

Sleep(5000); //<--- if I input anything while this is active the program quits after the time ends 

cout<<"End"<<endl; //this is outputted after Sleep(),but the program quits immediately after it 

當Sleep()命令處於活動狀態還是應該執行其他操作時,是否可以禁用用戶輸入?請給我你的意見。

+0

也許增加'std :: cin.ignore(INT_MAX);'得到任何被緩衝的輸入。很難說沒有更多的代碼。或者因爲這看起來像Windows,也許[BlockInput()](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646290(v = vs.85).aspx)。 –

+0

對不起,但這不是一個完整的例子。無論任何輸入,顯示的代碼行爲都完全相同。 – MSalters

+0

@ MSalters上面的代碼是一個通用的例子。問題是,如果您在循環或程序的一部分中使用此示例...並在Sleep()命令處於活動狀態時向控制檯輸入任何內容,程序將退出。 –

回答

-1

由於您使用的是Windows睡眠功能,我建議您使用_kbhit()。 您只需減少休眠時間,以便閱讀用戶輸入。

#include <windows.h> 
#include <conio.h> 

int main() 
{ 
    int wt = 50; // Time to wait every cycle 
    int tt = 5000; // Total time 
    for(int i = 0; i < tt; i+= wt) 
    { 
     Sleep(wt); 
     if (_kbhit()) 
      break; 
    } 
} 
相關問題