首页 >后端开发 >C++ >C 11 字符串文字如何处理不同的 Unicode 编码?

C 11 字符串文字如何处理不同的 Unicode 编码?

Barbara Streisand
Barbara Streisand原创
2024-12-15 00:06:11735浏览

How Do C  11 String Literals Handle Different Unicode Encodings?

C 11 中字符串文字的 Unicode 编码

C 11 中新字符和字符串文字类型的引入扩展了该语言的功能处理 Unicode 编码。虽然现在有四种字符类型(char、wchar_t、char16_t、char32_t)和五种字符串文字类型,但这些字符和字符串与编码机制的行为和兼容性具有特定的规则。

编码兼容性

x 字符引用可用于所有字符串类型,允许包含以十六进制表示的字符值。但是,u 和 U 引用仅限于具有 UTF 编码语义的字符串。字符引用根据包含字符串的编码进行转换。

字符串长度和编码

尽管字符串中包含的 Unicode 代码单元的数量可能会有所不同,具体取决于在编码中,表示字符串文字的数组是固定宽度的,每个元素表示一个代码单元。使用的代码单元数量由字符串的 Unicode 编码决定。

UTF 编码语义

u"" 字符串文字专门采用 UTF-16 编码,而 u8"" 字符串文字以 UTF-8 编码。 UTF-16 编码使用 char16_t 代码单元,而 UTF-8 编码使用可变长度字节序列来表示代码点。

单独代理

单独代理 (0xD800- 0xDFFF) 不允许作为 u 序列中的代码点。必须使用 UTF-16 代理对来表示此范围内的 Unicode 字符。

编码意识

标准字符串操作函数本身并不处理 Unicode 编码语义并处理 UTF - 将字符串编码为一系列单独的代码单元。但是,通过区域设置的输入和输出流允许通过适当的上下文读取和写入 Unicode 编码值。

以上是C 11 字符串文字如何处理不同的 Unicode 编码?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn