gpt4 book ai didi

c++ - 如何在 char16_t 字符串文字中编码 unicode 点 U+10000?

转载 作者:行者123 更新时间:2023-11-30 01:58:24 26 4
gpt4 key购买 nike

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

A string literal that begins with u, such as u"asdf", is a char16_t string literal. A char16_t string literal has type “array of n const char16_t”, where n is the size of the string as defined below; it has static storage duration and is initialized with the given characters. A single c-char may produce more than one char16_t character in the form of surrogate pairs.

如何编码 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"𐀀",假设源文件使用您的编译器期望的编码保存。这将是完全相同的事情,因为对源文件执行的第一步是用它的 universal-character-name 替换基本字符集之外的任何字符(即 \U00010000 )。

c-char 是“除单引号 '、反斜杠 \ 或新-行字符”,或一个转义序列(如\n,或\123,或\x41) ,或通用字符名称(如\u1234\U12345678)。

标准文档在末尾有一个语法产生式索引,您可以使用它来查找这些内容。

关于c++ - 如何在 char16_t 字符串文字中编码 unicode 点 U+10000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com