2009-12-18 16 views

risposta

5

Non è possibile utilizzare cin per leggere le sequenze di tasti e quindi continuare a fare qualcos'altro se non c'è nulla disponibile, che credo sia ciò che si potrebbe desiderare. cin è un flusso bufferizzato e semplicemente non funziona in questo modo. In effetti, non c'è modo di farlo utilizzando lo standard C++: dovrai utilizzare le funzionalità specifiche del sistema operativo.

+0

Grazie ragazzi per le vostre risposte. –

+0

Penso che lo standard consenta l'implementazione di 'cin' che entra nello stato EOF se nessun input attende. Tuttavia, le librerie standard dei compilatori che conosco (che includono MS VS, Borland e GCC) non forniscono tale implementazione. (Non sono sicuro perché non so se lo stream può smettere di essere nello stato EOF da solo e questo è ciò che 'cin' dovrebbe fare sul tasto.) –

+1

Lo stato di eof è il risultato di una mancata lettura - ha vinto essere impostato a meno che non si faccia una lettura. –

4

Gli stream C++ e gli streambuf sono sincroni, ovvero bloccano finché non c'è abbastanza input da leggere. Non esiste un modo portatile per controllare un flusso in modo asincrono. Valuta la possibilità di chiamare peek() da un thread separato.

Problemi correlati