2013-04-05 97 views
1

我遇到了特定的Unicode字符問題。如何使用一個字符串打印此unicode行?

比方說,我想打印出來十月: O = U + 00F3

setlocale(LC_ALL, ""); 
cout << "\xF3"; //this prints ó 
cout << "Okt\xF3"; //this prints Októ 
cout << "Okt\xF3ber"; //this prints Oktľr 

我知道打印出十月的唯一方法是:

cout << Okt\xF3 << ber; 

如何創建一個刺打印Október?

+0

什麼'「十月\ u00F3ber」'或者乾脆'「十月」'(如果你的編譯器+源文件格式支持它)? – dyp 2013-04-05 21:59:14

+0

@DyP:'\ u00F3be'是一個有效的序列。規範:「對於十六進制序列中的數字數量沒有限制。」 – RichieHindle 2013-04-05 22:01:08

+0

@DyP:「Október」會和我一樣糟糕,除非從文件中讀取,這有點奇怪。 – user2237070 2013-04-05 22:06:32

回答

1

您可以使用編譯時字符串連接,以防止會進一步比你想要的轉義序列:

cout << "Okt\xF3" "ber"; 
+0

如果只有像'\&'轉義序列表示沒有字符,那麼''\&a''將意味着''a''和''Okt \ xF3 \&ber「'意味着' 「十月」'。 – 2013-04-05 21:59:08

+0

謝謝,這似乎是一個很好的解決方案。 – user2237070 2013-04-07 00:31:46

1

使用

cout << "Okt\xF3\x62\x65r"; 

十六進制轉義序列儘可能地延伸,所以'b''e',它們是有效十六進制數字被包括在轉義序列。