Lettura di un carattere da un flusso di file in c ++ (AKA: Perché nessun equivalente standard C ++ del vecchio conio.h)?

1

Questa è una questione di decisioni di design. Trovo che ci siano così tante cose su cui lavoro su cui leggere _kbhit() è incredibilmente utile ma non riesco a trovare (leggi: non c'è) alcuna funzionalità come quella nello standard C ++.

  • Esempio: fai in modo che una fotocamera funzioni continuamente (e aggiorni una finestra sullo schermo) finché non colpisci il carattere "escape".
  • Esempio: premendo F11 in firefox per ingrandire la finestra.
  • Esempio: premendo il tasto W in qualsiasi gioco FPS per spostarsi in avanti

Tutti questi elementi leggono la tastiera senza premere [invio] tra ogni lettura. Come è fatto il diavolo? Sotto Windows uso getch() in un ciclo continuo eseguito nel suo stesso thread. Non sono sicuro che sia una buona idea per quanto riguarda le prestazioni, ma la maggior parte del software che scrivo in un sistema operativo non è molto critica (sono soprattutto interfacce utente a linea di comando che si interfacciano con i sistemi embedded che sviluppo).

Questo è per un'interfaccia utente per un sistema e l'interfaccia utente deve essere eseguita sotto Linux. Come si legge una hit della tastiera senza chiamare una funzione conio.h ?

    
posta medivh 04.07.2011 - 12:43
fonte

1 risposta

4

bene, gli esempi che hai dato dipendono tutti da qualche framework GUI, come l'API di Windows in questo caso speciale.

C ++ utilizza un concetto di input molto astratto con il flusso di input e lo standard non conosce nemmeno la tastiera o i tasti in generale.

Ecco perché è necessario eseguire una delle seguenti operazioni:

  1. programmazione dipendente dal sistema
  2. utilizzando una libreria

Alcuni suggerimenti utili per il controllo delle chiavi dipendente dal sistema possono essere trovati qui: link

L'uso delle librerie sarà il modo molto più protetto. Se l'interfaccia utente dovrebbe essere grafica, fornirà un modo per verificare l'input da tastiera. Potresti usare Qt ( link ) ad esempio, se vuoi rimanere indipendente dal sistema. Qt offre eventi per input da tastiera.

    
risposta data 04.07.2011 - 13:20
fonte

Leggi altre domande sui tag