在C ++编程语言C ++第4版第6.2.6节中,它说:
允许R,L和u前缀的组合,例如,uR“**(foo \(bar))**”。请注意字符(无符号)和字符串UTF-32编码(第7.3.2.2节)的U前缀含义的显着差异。
我不太明白作者在这里想说的是什么。确实是什么“戏剧性的差异”?为什么这里使用“(unsigned)”这个词?
根据我的理解,带有U前缀的字符文字包含引用字符的ISO-10646代码点值,它基本上与字符串文字的U前缀相同,并且与概念无关“无符号”。
答案 0 :(得分:0)
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";
有关字符串文字的进一步参考: Unicode encoding for string literals in C++11
所以u
和U
以及unsigned
之间确实存在一些差异,但我不认为这是戏剧性的。