C++ 有没有可能有一个;循环中断“;有用户输入吗?

C++ 有没有可能有一个;循环中断“;有用户输入吗?,c++,C++,这可能在某个地方得到了答案,我似乎能找到答案。无论如何,我正在制作一个循环一定次数的程序,但是我希望该程序在用户点击空格键后接收用户的输入,以触发用户将输入某些内容的事实。现在我的逻辑可能不正确,但这就是我正在尝试的 for ( int i = 0 ; i < length (user input from before); i++){ do{ cout << "Hello World" << endl; }while(cin

这可能在某个地方得到了答案,我似乎能找到答案。无论如何,我正在制作一个循环一定次数的程序,但是我希望该程序在用户点击空格键后接收用户的输入,以触发用户将输入某些内容的事实。现在我的逻辑可能不正确,但这就是我正在尝试的

  for ( int i = 0 ; i < length (user input from before); i++){
     do{
        cout << "Hello World" << endl;
     }while(cin.getch() == ' ');
  }
for(int i=0;icout
getch
是一个阻塞函数,即如果输入缓冲区为空,它将阻塞当前线程并等待用户输入。如果您想同时让某个线程工作,则必须生成一个单独的线程。请参阅以下为“worker”启动新线程的代码,而主线程等待用户输入。希望能有所帮助

#include <iostream>
#include <thread>

struct Worker {
    Worker() : stopped(false) {};
    void doWork() {
        while (!stopped) {
            cout << "Hello World!" << endl;
        }
        cout << "Stopped!" << endl;
    }
    atomic<bool> stopped;

};

int main(){

    Worker w;
    thread thread1(&Worker::doWork,&w);

    int c;
    while ((c = getchar()) != ' ');

    w.stopped = true;

    thread1.join();  // avoid that main thread ends before the worker thread.
}
#包括
#包括
结构工人{
Worker():已停止(false){};
无效销钉(){
当(!停止){

不能将getCh()放入自己的线程中。然后享受增加的复杂性:)回到可以使用DOS中断9和回调的时候。现在,我认为这是最好的方法。@Michael Dorgan我要诚实一点,问你将它放入自己的线程是什么意思?这里有一个更好的答案:关键是谷歌搜索“C++非阻塞输入”
getch
不是类istream的成员。可能您的意思是
cin.get()
。这可能是错误的或无关紧要的,但不是“结构”“C的东西不是C++?我在C++中使用类很难?@ EM3E:C++提供了BoTCH类和结构。C++中的 Stult几乎与一个类的含义相同,唯一的区别是默认情况下每个成员都是公共的。