2013-04-05 68 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',它们是有效十六进制数字被包括在转义序列。