我写了一个简单的计时器。按“s”(不按Enter键提交),计时器(for-loop)将启动。这是一个无止境的循环。我想在用户按下“s”后立即停止它,就像我启动它一样。只要按下“s”(不按Enter键提交),循环就应该停止。怎么做?
#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int main()
{
char ch;
int m=0,h=0;
if ((ch = _getch()) == 's')
for (int i=0;;i++)
{
cout << "h m s" << endl;
cout << h << " " << m << " " << i;
system("CLS");
if (i==60) {i=0;m+=1;}
if (m==60) {m=0;h+=1;}
if (h==24) {h=0;}
}
return 0;
}
答案 0 :(得分:3)
有一个单独的volatile
变量,您可以将其用作退出循环的条件。
在一个单独的线程上(只有监听用户输入并同时保持循环的方式)在用户按下"s"
时修改变量。
volatile bool keepLoopGoing = true;
//loop
for (int i=0; keepLoopGoing ;i++)
cout << i << endl;
//user input - separate thread
while ( keepLoopGoing )
{
cin >> input; // or getchar()
if ( input == "s" )
keepLoopGoing = false;
}
注意,在您按任何内容之前,您很可能会溢出i
。