Идея состоит в том, чтобы ждать малое время (0.1с), потом проверять наличие символа в буфере клавиатуры, если он есть - стоп, если нет - повторяем цикл.
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;
bool waitKey(const size_t secondsToWait)
{
int i=secondsToWait*10;
for(;(i)&&(!_kbhit());i--)
{
Sleep(100);
if(i%10==0)
{
cout<<i/10<<endl;
}
}
//очистка буфера клавиатуры
while(_kbhit())
{
getch();
}
return(i);
}
int main()
{
cout<<"press any key..."<<endl;
if(waitKey(5))
{
cout<<"Countdown was stopped by key" << endl;
}
else
{
cout<<"Countdown was not stopped"<<endl;
}
return 0;
}