c ++ - Er der en måde at tilslutte eller afbryde Windows Console input med cin objekt?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en multithreaded konsol app ved hjælp af std :: cin og std :: cout for konsol IO. Problemet er, at jeg nogle gange har brug for at dræbe specifik tråd, fordi den hænger på cin, mens der ikke kræves input fra den tråd - indtil den tid funktion kalder på cin løber i en loop. Når hovedtråden dræber arbejdstråd, bedes det indlæses via cin, men så er cin brudt på en eller anden måde og kan ikke bruges mere hensigtsmæssigt. Jeg har skabt separat inputobjekt til arbejdstråd, og tænker på, at dette vil løse problemet, men det virker ikke, fordi konsollen input er ikke forbundet med det som standard.


#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 ;
}


Jeg behøvede ikke at oprette nye indløbsstrømobjekter, hvis der er en måde at afbryde og tilslutte konsolindgang direkte til cin. Koden ovenfor viser, at for ny objektkonsolindgang ikke er tilsluttet som standard.

Bedste reference