2012-11-06 71 views
6

是否有一個標準的功能用於非字母輸入字符的用戶友好表示?
說char(27)將是「ESC」或「Escape」或類似的東西。
我在問這個,因爲這對我來說很簡單,就是在命令行中顯示控件的幫助。顯示字符C++名稱的標準解決方案?

編輯:

由於@ypnos指出:的問題是如何避免定義我自己的鍵名。
我不知道是否有一個函數在boost或std或我錯過了一些基本的lib?

現在,Ascii-only可以爲我工作,但我正在尋找一個「標準」解決方案,因爲我不想重新實現一次處理Unicode輸入 - 比如說帶有不在Ascii中的重音的字符 - 稍後。

我的程序代碼將被髮送到Linux和Windows,我也不希望名稱在地方出現錯誤。

+0

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

然後你可以簡單地顯示一個Unicode代碼點的(27歲,說的)名字我認爲問題是如何避免定義自己的關鍵名稱。 – ypnos

+0

Thx,也可能初始化char char_names [255];'但我正在尋找一個更好看的解決方案。 –

+0

另一個更老派的變體是擁有一個包含256個字符串條目的數組,並將該字符值用作數組中的索引。 –

回答

2

大多數C++ - y的方式可能會通過庫,如Ogonek。不幸的是,相關功能目前尚未實現。

R. Martinho費爾南德斯(維護者)tells me它應該如下所示:使用

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

如果僅使用Unicode數據文件,則不包含控制字符的名稱。我的系統上安裝的所有'UnicodeData.txt'必須說U + 001B(27,Escape)是''。 –

+0

那麼,它可以通過查詢其中一個別名(即「控制」類別之一)來獲得。這還沒有實現:(。整個東西仍然是非常alpha-y。但是,這些都不是鍵名和鍵盤鍵的名稱,所以我不知道它是否有幫助。 –

+0

鍵盤上的鍵只是間接與char有關,例如沒有'Ctrl'字符,或'F12'字符,即使它們通常是鍵。 – MSalters