在C++编程语言C++第4版第6.2.6节中,它说:
允许R,L和u前缀的组合,例如,uR"**(foo \(bar))**".请注意字符(无符号)和字符串UTF-32编码(第7.3.2.2节)的U前缀含义的显着差异.
我不太明白作者在这里想说的是什么.确实是什么"戏剧性的差异"?为什么这里使用"(unsigned)"这个词?
根据我的理解,带U前缀的字符文字包含引用字符的ISO-10646代码点值,它基本上与字符串文字的U前缀相同,并且与"unsigned"的概念无关. ".
unsigned是一个 C++ 关键字,意味着声明中(在大多数情况下)后面的整数类型仅具有正值。
参考请看这里: http: //en.cppreference.com/w/cpp/language/types
现在对于 char 和 char[] 你有:
char16_t c = u'\u00F6';
char32_t d = U'\U0010FFFF';
char16_t C[] = u"Hell\u00F6";
char32_t D[] = U"Hell\U000000F6\U0010FFFF";
Run Code Online (Sandbox Code Playgroud)
有关字符串文字的进一步参考: C++11 中字符串文字的 Unicode 编码
u因此,和U之间确实存在一些差异,unsigned但我不认为它有什么戏剧性。