如何使用用户输入打破循环?

时间:2016-02-02 04:02:24

标签: c++

我正在尝试这样的事情。它从5-1开始计算秒数。

 #include<iostream>
 #include<stdlib.h>
 #include<windows.h>
 #include<iomanip>
 using namespace std;

 int main()
 {
    for(int i=5;i>0;i--)
  {
   cout<<"\n\n\n\n\n\n";
   cout<<setw(35);
   cout<<i;
   Sleep(1000);
   system("CLS");
  }
  system("PAUSE");
}

我试图找出一种方法来使用用户输入(来自键盘)打破循环,以便在其运行时打破它。我不知道怎么做。我听说过多线程。我甚至不知道多线程是否在我的情况下有任何应用。那么在执行循环时如何在中间打破它的任何想法?

2 个答案:

答案 0 :(得分:1)

我认为你需要一个线程才能做到。

在主循环中添加一个全局变量, 使用线程接收命令行输入并修改全局变量。

声明一个全局变量

bool stop = false;

创建一个线程来读取标准输入并修改&#39;停止&#39;

DWORD WINAPI thread1(LPVOID pm)
{
    //check the getchar value
    int a = getchar();
    while (a != '0'){
        a = getchar();
    }
    stop = true;
    return 0;
}

在你的主要:

HANDLE handle = CreateThread(NULL, 0, thread1, NULL, 0, NULL);
 for(int i=5;i>0 && !stop;i--)
  {
   cout<<"\n\n\n\n\n\n";
   cout<<setw(35);
   cout<<i;
   Sleep(1000);
   system("CLS");
  }

答案 1 :(得分:0)

  • 试试这个:

    #include<iostream>
    using namespace std;
    int main()
    {
       int i = 1;
       while(i)
       {
         // do your work here
         cin>>i;
       } 
       cout<<"Terminated"<<endl;
    }
    

    继续扫描int i,当你想要断开循环时给出0作为输入值,你的循环将终止。