2013-08-26 29 views
0

我想將字符串轉換爲包含給定字符串的Unicode十六進制表示形式的所有字符並返回的字符串。目標語言是C++。將字符串轉換爲Unicode十六進制表示並返回到C++

例如,給定的德語單詞Hände,我希望能夠以這個字符串轉換成它的Unicode的16進制U+0068 U+00E4 U+006E U+0064 U+0065,並從它恢復到原來的表示Hände

這是如何在C++中完成的?

+2

...... 「'HU + 00E4nde'」 「都在各自的Unicode 16進制給定的字符串字符」 ......所以,'H','N' ,'d'和'e'不是字符? –

+0

這不是我知道的任何一種標準格式,所以你必須更好地定義它。 '+'字符如何編碼?基本多語言平面以外的字符怎麼樣(不適合四位數字)。一般來說,重用使用現有兼容庫的標準編碼方案會更好,例如JSON字符串文字編碼或UTF-8-URL編碼。 – bobince

+0

@bobince當談到Unicode字符時(這裏字符用作空格分隔的字),它是文檔中經常使用的格式。約定在+之後是四個或更多十六進制字符。但是,我從來沒有聽說過它將其用作傳輸格式。 –

回答

2

根據你的評論,什麼阻止你使用這個簡單的談話?

std::u16string in = u"Hände"; 
stringstream out; 

for (auto x : in) 
    out << hex << "U+" << x << " "; 

cout << out.str(); 

輸出:

U+48 U+e4 U+6e U+64 U+65 
+0

+1但他使用的是UTF-8編碼的字符串,因此不應該使用'std :: string'嗎? – 0x499602D2

+0

@ 0x499602D2:不幸的是沒有。他需要比'std :: string'更多的東西來保存'ä'字符。看看[這裏](http://coliru.stacked-crooked.com/view?id=86bc23921e95e842db40eff01a030d18-7904cf83bb2b27db3f32fade22b567cc) – deepmax

+0

你的代碼示例是空的。 :(所以你說'u8'前綴不能存儲'ä'? – 0x499602D2

相關問題