c++ - 字 rune 字的 U 前缀与字符串文字的区别是什么?

标签 c++

在 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

所以确实 uU 以及 unsigned 之间存在一些差异,但我认为这并不显着。

关于c++ - 字 rune 字的 U 前缀与字符串文字的区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21452015/

相关文章:

c++ - 如何安全终止多线程进程

c++ - 继承后重新获得 move 可构造性

c++ - Boost 编译点云库时出现的问题

c++ - 从库类扩展,然后如何让库调用派生类方法

c++ - 在 Mac 上构建 Googletest 时出现链接错误(命令行)

C++ 模块和 C++ ABI

c++ - 读取以行分隔的字符串列表时跳过空行

c++ - sfml sf::Image() 类问题

c++ - 如何将点添加到结构类型的 vector

c++ - 如何将模板存储为典型 C++ 类的成员