2012-11-06 4 views
6

Czy istnieje standardowa funkcja dla przyjaznej dla użytkownika prezentacji znaków wejściowych innych niż alfanumeryczne?
Powiedz char (27) to "ESC" lub "Escape" lub coś podobnego.
Pytam o to, ponieważ byłby to łatwy sposób, aby wyświetlić pomoc dotyczącą elementów sterujących w wierszu poleceń.Standardowe rozwiązanie do wyświetlania nazw znaków w języku C++?

EDIT:

Jak @ypnos zauważył: pytanie brzmi, jak uniknąć definiowania własnych nazwy klawiszy.
Zastanawiam się, czy istniała funkcja w boost lub std lub podstawowe lib, które przegapiłem?

Na razie tylko Ascii może pracować dla mnie, ale szukam "standardowego" rozwiązania, ponieważ nie chcę ponownie wdrażać danych po wprowadzeniu danych z Unicode - powiedzmy znaków z akcentami nie w Ascii - później .

Mój kod programu zostanie wysłany do Linuksa i Windowsa i ja również nie chcę, aby nazwy były błędne w miejscach.

+0

Myślę, że pytanie brzmi: jak uniknąć definiowania własnych kluczowych nazw. – ypnos

+0

Thx, również możliwość inicjowania 'char char_names [255];' ale szukam lepszego rozwiązania. –

+0

Innym, bardziej oldschoolowym wariantem jest posiadanie tablicy z 256 wpisami łańcuchowymi i użycie wartości znaku jako indeksu w tablicy. –

Odpowiedz

2

Najbardziej C++ - sposób byłby prawdopodobnie przez biblioteki, takie jak Ogonek. Niestety, odpowiednia funkcja nie jest jeszcze w tym momencie wdrożona.

R. Martinho Fernandes (opiekun) tells me że powinno to wyglądać następująco:

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

     … 
    } 
} 

I wtedy można po prostu wyświetla kod Unicode Point (27, powiedzmy) Nazwa użyciu

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

Jeśli wykorzystuje tylko plik danych Unicode, nie zawiera nazw znaków sterujących. Wszystko, co "UnicodeData.txt" zainstalowane w moim systemie ma do powiedzenia na temat U + 001B (27, Escape) to "". –

+0

Cóż, można go uzyskać, wysyłając zapytanie do jednego z aliasów (mianowicie do jednej z odmian "kontrolnych"). To jeszcze nie zostało jeszcze zaimplementowane :(Cała sprawa nadal jest bardzo alfa-y. Nadal nie są to kluczowe nazwy, a także imiona klawiszy klawiatury, więc nie jestem pewien, czy to pomaga. –

+0

Klawisz na klawiaturze jest jedynie pośrednio związane z char, nie ma na przykład '' Ctrl'' char lub '' F12'' char, mimo że są to powszechnie używane klucze. – MSalters