在 The C++ Programming Language C++ 第 4 版第 6.2.6 节中,它说:
Combinations of R, L, and u prefixes are allowed, for example, uR"**(foo\(bar))**". Note the dramatic difference in the meaning of a U prefix for a character (unsigned) and for a string UTF-32 encoding (§7.3.2.2).
不太明白作者想表达什么。究竟什么是“显着差异”?为什么这里使用“(unsigned)”这个词?
根据我的理解,一个U前缀的字符字面量包含了引用字符的ISO-10646代码点值,这与字符串字面量的U前缀基本相同,与概念无关的“无符号”。
最佳答案
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
之间存在一些差异,但我认为这并不显着。
关于c++ - 字 rune 字的 U 前缀与字符串文字的区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21452015/