まず第一に、キーを押したかどうかに関係なく、コードが 10 秒間スリープするという最大の問題があります。これが私の提案です。
#include <ctime>
#include <conio>
#include <iostream>
using namespace std;
inline int getTime()
{
return static_cast<int>(static_cast<double>(clock())/CLOCKS_PER_SEC);
}
int main()
{
int i = 1;
int time, totaltime;
cout << "hit q to quit\n";
while(1)
{
i=1;
totaltime = getTime();
time = getTime() - totaltime;
while(!_kbhit()&&time<5)
{
i++;
time = getTime() - totaltime;
}
if (kbhit()) {
if(_getch() == 'q') return 0; cout << "you hit a key - hit q to quit\n";
}
else cout<<"you waited - hit q to quit\n";
}
return 0;
}
そのコードが実際に行うことは、コードの時間を測定することです... 5 秒に達すると、待機していると表示されます。q 以外のキーを押すと、それが表示されます。q は明らかに終了します。