2012-11-06 7 views
6

Gibt es eine Standardfunktion für die benutzerfreundliche Darstellung von Nicht-Alphanum-Eingabezeichen?
Angenommen, char (27) wäre "ESC" oder "Escape" oder etwas Ähnliches.
Ich frage das, weil das eine einfache Möglichkeit für mich wäre, Hilfe zu Steuerelementen in der Befehlszeile anzuzeigen.Standardlösung zum Anzeigen von Namen von Zeichen C++?

EDIT:

Wie @ypnos wies darauf hin: die Frage ist, wie meine eigenen Schlüsselnamen zu vermeiden, definieren.
Ich frage mich, ob es eine Funktion in Boost oder Std oder eine grundlegende lib, die ich verpasst habe?

Im Moment könnte Ascii-only nur für mich arbeiten, aber ich suche nach einer "Standard" -Lösung, weil ich nicht neu implementieren möchte, wenn ich mit Unicode-Eingabe arbeite - sagen wir Zeichen mit Akzenten nicht in Ascii - später .

Mein Programmcode wird an Linux und Windows gesendet und ich möchte auch nicht, dass die Namen an einigen Stellen fehlerhaft sind.

+0

mit Ich denke, die Frage ist, wie man vermeidet, eigene Schlüsselnamen zu definieren. – ypnos

+0

Thx, auch eine Möglichkeit, 'char char_names [255] zu initialisieren;' aber ich suche nach einer besser aussehenden Lösung. –

+0

Eine andere Variante der alten Schule ist ein Array mit 256 String-Einträgen und der Zeichenwert als Index für das Array. –

Antwort

2

Die meisten C++ - y Weise würde wahrscheinlich über eine Bibliothek wie Ogonek. Leider ist die relevante Funktion zur Zeit noch nicht implementiert.

R. Martinho Fernandes (der Betreuer) tells me, dass es sollte wie folgt aussehen:

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 }; 
     } 

     … 
    } 
} 

Und dann könnte man einfach ein Unicode-Anzeige-Codepunkt (27, sagen) Name

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

Wenn nur die Unicode-Datendatei verwendet wird, enthält sie keine Namen für Steuerzeichen. Alle 'UnicodeData.txt', die auf meinem System installiert sind, müssen über U + 001B sagen (27, Escape) ist' '. –

+0

Nun, es kann erhalten werden, indem nach einem der Aliase (nämlich einer der "Kontroll" -Sorte) abgefragt wird. Das ist auch noch nicht implementiert :(. Das Ganze ist immernoch sehr alpha-y. Trotzdem sind das keine Schlüsselnamen und Namen von Tastaturtasten, also bin ich mir nicht sicher ob es hilft. –

+0

Eine Taste auf einer Tastatur bezieht sich nur indirekt auf ein Char. Es gibt zum Beispiel kein 'Ctrl'-Zeichen oder ein' 'F12''-Zeichen, obwohl sie häufig gefundene Schlüssel sind. – MSalters

Verwandte Themen