有没有办法在不使用Ctrl + C的情况下运行时打破无限循环?我想在其他程序中实现这样的方法。就像在这个示例程序中一样:
#include <iostream>
int main()
{
int x = 0;
for(;;)
cout << x;
}
有没有办法保持for循环,但随时用一些键打破它。我也应该解释我理解使用break;,但我希望循环继续下去。如果我使用这样的中断条件,for循环将停止并等待响应。
#include <iostream>
int main()
{
int x = 0;
for(;;)
{
cout << x;
if(getch()=='n')
break;
}
}
答案 0 :(得分:1)
在遇到时找到你希望break离开循环的条件然后使用break关键字:
#include <iostream>
int main()
{
int x = 0;
for(;;)
cout << x;
if(/* break condition*/){
break;
}
}
通过检测用户的特定键盘输入,没有什么能阻止您实现中断条件。
编辑:从您编辑过的问题看来,您希望循环继续一直运行而不是停止等待用户输入。我能想到这样做的唯一方法是生成一个新线程,该线程侦听用户输入,改变在主线程的中断条件下检测到的变量。
如果您可以访问c ++ 11和新的线程库,则可以执行以下操作:
#include <iostream>
#include <thread>
bool break_condition = false;
void looper(){
for(;;){
std::cout << "loop running" << std::endl;
if(break_condition){
break;
}
}
}
void user_input(){
if(std::cin.get()=='n'){
break_condition = true;
}
}
int main(){
//create a thread for the loop and one for listening for input
std::thread loop_thread(looper);
std::thread user_input_thread(user_input);
//synchronize threads
loop_thread.join();
user_input_thread.join();
std::cout << "loop successfully broken out of" << std::endl;
return 0;
}
如果您决定采用线程方法,请小心,因为多线程代码中存在单线程代码中不存在的问题,并且它们有时可能非常讨厌。
答案 1 :(得分:-1)
你正在寻找继续我认为
#include <iostream>
int main()
{
int x = 0;
for(;;)
{
cout << x;
if(getch()=='n')
continue;
}
}