我有一个多线程控制台应用程序使用std :: cin和std :: cout进行控制台IO . 问题是,有时我需要杀死特定的线程,因为它挂在cin上,而该线程不需要输入 - 直到cin上的函数调用在循环中运行 . 当主线程杀死工作线程时,它通过cin请求输入但是然后cin以某种方式被破坏并且不能再被适当地使用 . 我为工作线程创建了单独的输入对象,认为我将解决这个问题,但它不起作用,因为默认情况下控制台输入没有与它连接 .

#include <iostream>
#include <conio.h>

using namespace std ;

class NewInput: public istream
{
    public:
    NewInput()
    {}
} ;

int main()
{
    NewInput X ;
    string var ;
    X >> var ;

    getch() ;
    return 0 ;
}

如果有办法断开连接控制台输入直接与cin连接,我将不需要创建新的输入流对象 . 上面的代码表明默认情况下没有连接新的对象控制台输入 .