2013-05-29 122 views
0

使用clang ++ 3.2。 尝试打印(\ u1D586),打印一个unicode拉丁字母(utf8)

cout << << endl; 

,但得到了一个编译器错误:

error: expected expression 
cout << <U+1D586> << endl; 

另外,

cout << "\u1D586" << endl; 

了不完整的输出:

ᵘ6 

似乎最后的'6'不是一起解读。

原因是什么以及如何解决这个问题?

+1

首先,'u8“”'(对我来说这是一个正方形,所以我不能复制它)。 – chris

+0

你使用什么编译器? –

+0

$ clang ++ --version ng版本3.2(tags/RELEASE_32/final) 对象:x86_64-unknown-linux-gnu 线程模型:posix –

回答

2

\u后面跟着4个十六进制数字,在你的情况下你应该使用\U后跟8个十六进制数字\U0001D586

+0

没错!非常感谢您指出这一点!介意解释第一个编译器错误一点点? –

+0

@cppinitiator,因为''不是表达式,比如'5',或'“hello”'或'x'。这是胡言乱语。 – chris

+0

@cppinitiator你必须忘记一双''''或''' – johnchen902