2009-12-18 3 views

Répondre

5

Vous ne pouvez pas utiliser cin pour lire les séquences de touches, puis continuer à faire autre chose s'il n'y a rien de disponible, ce que je pense est ce que vous voulez. Cin est un flux tampon et ne fonctionne tout simplement pas de cette façon. En fait, il n'y a aucun moyen de le faire en utilisant Standard C++ - vous devrez utiliser des fonctionnalités spécifiques au système d'exploitation.

+0

Merci les gars pour vos réponses. –

+0

Je pense que Standard autorise l'implémentation 'cin' qui passe en EOF si aucune entrée ne l'attend. Cependant, les bibliothèques standard de compilateurs que je connais (MS VS, Borland et GCC) ne fournissent pas une telle implémentation. (Je ne suis pas sûr parce que je ne sais pas si stream peut cesser d'être en EOF et c'est ce que 'cin' devrait faire à la frappe.) –

+1

L'état d'eof est le résultat d'un échec de lecture - il a gagné Ne soyez pas mis à moins que vous ne lisiez. –

4

Les flux C++ et les streambufs sont synchrones, c'est-à-dire qu'ils bloquent jusqu'à ce qu'il y ait suffisamment de données à lire. Il n'y a pas de manière portable de vérifier un flux de manière asynchrone. Pensez à appeler peek() à partir d'un thread séparé.

Questions connexes