У меня есть простая программа, которая запускает повторяющийся таймер, а затем переходит в цикл getline, анализируя любые входные данные. Однако всякий раз, когда появляется сигнал таймера, функция getline завершает работу, что выглядит так, как будто пользователь нажал клавишу ввода. Как я могу остановить сигнал, делающий это? Или, если это не так, как я могу отличить настоящий возврат от сигнала? Последнее менее желательно, так как тогда мне придется запускать этот код дифференцирования на частоте 400 Гц.
Ниже приведен код, который я сейчас использую для получения строки. Пустой ввод будет повторно печатать строку APP>, в то время как любой другой ввод будет пропущен.
do
{
std::cin.clear();
line.clear();
std::cout << "APP > ";
std::getline(std::cin, line);
}
while (line.length() == 0);
Спасибо всем
Мэтт
std::cin
. Интересно, устанавливается ли failbit после срабатывания будильника. - person Robᵩ   schedule 10.11.2012