2012-11-06 11 views
6

Esiste una funzione standard per la rappresentazione user-friendly di caratteri di input non alfanumerici?
Dire char (27) sarebbe "ESC" o "Escape" o qualcosa di simile.
Lo chiedo perché sarebbe un modo semplice per visualizzare l'aiuto sui controlli nella riga di comando.Soluzione standard per la visualizzazione dei nomi di caratteri C++?

EDIT:

Come @ypnos rilevare: la domanda è come evitare di definire i miei nomi chiave.
Mi chiedo se ci fosse una funzione in boost o std o in qualche lib di base che mi mancava?

Per ora, Ascii-only potrebbe funzionare per me, ma sto cercando una soluzione "standard" perché non voglio reimplementare una volta che si tratta di input Unicode - ad esempio caratteri con accenti non in Ascii - in seguito .

Il mio codice programma verrà inviato a Linux e Windows e inoltre non voglio che i nomi siano difettosi nei luoghi.

+0

Penso che la domanda sia come evitare di definire i propri nomi di chiavi. – ypnos

+0

Thx, anche una possibilità di inizializzazione di 'char char_names [255];' ma sto cercando una soluzione più bella. –

+0

Un'altra variante più vecchia scuola consiste nell'avere una matrice con 256 voci di stringa e utilizzare il valore del carattere come indice nell'array. –

risposta

2

Il modo più C++ - probabilmente sarebbe tramite una libreria come Ogonek. Sfortunatamente, la funzione rilevante non è ancora stata implementata al momento.

R. Martinho Fernandes (il manutentore) tells me che dovrebbe apparire come segue:

namespace ogonek { 
    namespace ucd { 
     … 

     basic_text<utf8> get_name(codepoint u) { 
      return basic_text<utf8> { 
       find_property_group(name_data, name_data_size, u).name }; 
     } 

     … 
    } 
} 

E poi si potrebbe semplicemente visualizzare un punto di codice Unicode (27, dicono) nome utilizzando

std::cout << ogonek::ucd::get_name(27); 
+0

Se questo utilizza solo il file di dati Unicode, non include i nomi dei caratteri di controllo. Tutti gli 'UnicodeData.txt' installati sul mio sistema hanno da dire su U + 001B (27, Escape) è' '. –

+0

Bene, può essere ottenuto interrogando uno degli alias (ovvero una delle varietà "control"). Anche questo non è ancora stato implementato :(. Il tutto è ancora molto alpha-y.Tuttavia, quelli non sono nomi chiave, e in, i nomi dei tasti della tastiera, quindi non sono sicuro se aiuta. –

+0

Un tasto su una tastiera è solo indirettamente correlato ad un char in ogni caso, non esiste il carattere "Ctrl", ad esempio, o un carattere "F12" anche se sono chiavi comunemente trovate. – MSalters

Problemi correlati