如何在char16_t字符串文本中编码 Unicode 点 U+10000

How do I codify the unicode point U+10000 in a char16_t string literal?

本文关键字:编码 Unicode U+10000 文本 字符串 char16      更新时间:2023-10-16

C++11标准中的第2.14.5p9段说(强调我的(:

以 u 开头的字符串文本(如 u"asdf"(是一种char16_t 字符串文字。char16_t字符串文本的类型为"n 常量数组" char16_t",其中 n 是字符串的大小,定义如下;它有 静态存储持续时间,并使用给定字符进行初始化。 单个 c-char 可能会char16_t在 代孕对的形式

如何编纂 unicode 点 U+10000,它由char16_t字符串文字中的代理项对 D800(高代理项(和 DC00(低代理项(组成?

引用的文中上述c-char是什么意思?

其实很简单:u"U00010000" .如文中所述,单个 c-char(在本例中为 U00010000 (可以产生多个char16_t。快速测试将显示u"U00010000"的类型char16_t const[3](代理项对为 2 + 空终止符为 1(。

或者,您可以简单地将字符直接放在字符串中,如u" ",假设源文件以编译器期望的编码保存。这将是完全相同的事情,因为对源文件执行的第一步是将基本字符集之外的任何字符替换为其通用字符名称(即 U00010000 (。

c-char 是"源字符集的任何成员,除了单引号 '、反斜杠 或换行符",或转义序列(如 n123x41(,或通用字符名称(如 u1234U12345678(。

标准文档在末尾附近有一个语法制作的索引,您可以使用它来查找这些内容。