У меня есть поток таймера, который будет выполняться в течение пяти секунд в будущем, и цикл ожидания его завершения.Затем программа завершает работу, когда пользователь нажимает клавишу ввода.Я заметил, что во время ожидания цикла ввод принят во входной буфер и используется для завершения программы, и любые последующие нажатия ввода вводятся в командную строку !
Я хочу игнорировать все входные данные, которые были введены до «нажмите ввод для выхода», включая ввод.Прошло много времени с тех пор, как я работал с C ++, и я не могу вспомнить, как это сделать (я искал SO и Google и не могу найти ответ на этот конкретный вопрос).Вот мой пример:
std::cout << "Timer test: wait 5 seconds\n";
boost::asio::io_service test_io;
deadline_timer test_timer(test_io, posix_time::seconds(5));
int testInt = 0;
auto asynctest = [&testInt](const boost::system::error_code&) {
std::cout << "Running asynctest()\n";
testInt = 5;
};
std::cout << "Starting asynchtest, which should output in 5 seconds\n";
test_timer.async_wait(boost::bind<void>(asynctest, boost::asio::placeholders::error));
while(testInt != 5) {
std::cout << ". ";
boost::this_thread::sleep(boost::posix_time::milliseconds(200));
}
// How do I clear all input from the input stream here so that if the user hit enter
// during the timer countdown it will be cleared and user still must hit enter to
// exit program?
std::cout << "Press enter to exit\n";
std::cin.ignore(80, '\n');
return 1;
adsf