2017-02-16 3 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 Sleep, я предлагаю вам использовать _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; 
    } 
}