字符文字与字符串文字的U前缀有什么区别?

时间:2014-01-30 09:11:45

标签: c++

在C ++编程语言C ++第4版第6.2.6节中,它说:

  

允许R,L和u前缀的组合,例如,uR“**(foo \(bar))**”。请注意字符(无符号)和字符串UTF-32编码(第7.3.2.2节)的U前缀含义的显着差异。

我不太明白作者在这里想说的是什么。确实是什么“戏剧性的差异”?为什么这里使用“(unsigned)”这个词?

根据我的理解,带有U前缀的字符文字包含引用字符的ISO-10646代码点值,它基本上与字符串文字的U前缀相同,并且与概念无关“无符号”。

1 个答案:

答案 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

所以uU以及unsigned之间确实存在一些差异,但我不认为这是戏剧性的。