2009-12-18 16 views

Respuesta

5

No puede usar cin para leer las pulsaciones de teclas, y luego continuar haciendo otra cosa si no hay nada disponible, que creo que es lo que puede desear. cin es una transmisión en búfer y simplemente no funciona de esa manera. De hecho, no hay forma de hacerlo con el estándar C++: tendrá que usar funciones específicas del sistema operativo.

+0

Gracias chicos por sus respuestas. –

+0

Creo que Standard permite la implementación de 'cin' que entra en el estado EOF si no hay entradas esperadas. Sin embargo, las bibliotecas estándar de compiladores que conozco (que incluyen MS VS, Borland y GCC) no proporcionan dicha implementación. (No estoy seguro porque no sé si stream puede dejar de estar en estado EOF por sí mismo y esto es lo que 'cin' debería hacer al presionar una tecla). –

+1

El estado eof es el resultado de una falla de lectura: ganó no se establecerá a menos que hagas una lectura. –

4

Las transmisiones en C++ y streambufs son síncronas, es decir, se bloquean hasta que haya suficiente entrada para leer. No hay una forma portátil de verificar una transmisión de forma asincrónica. Considera llamar a peek() desde un hilo separado.

Cuestiones relacionadas