Фангенто Asked:2025-01-31 00:37:12 +0000 UTC2025-01-31 00:37:12 +0000 UTC 2025-01-31 00:37:12 +0000 UTC C++。统一码。 UTF-8 字符文字的值不能占用超过一个单位。 772 char8_t h = u8'ы'; 给出错误:“UTF-8 字符文字的值不能占用多个模块” 我使用带有 C++20 标准的 MSVC 的 Visual Studio。 c++ 1 个回答 Voted Best Answer HolyBlackCat 2025-01-31T01:30:03Z2025-01-31T01:30:03Z char8_t其行为大约类似于unsigned char,即存储从0到255的值。并且Unicode字符有超过一百万个。 char8_t- 不是一个 UTF-8 符号(不是一个代码点),而是一个代码单元,即组成字符的字节之一(每个字符 1 到 4 个字节)。 一般来说,char8_t即使u8在生产线之前,它们也不是很有用。所有相同的内容都可以存储在 中char。 有两种椅子可供选择: 您可以将字符编号char32_t或类似内容存储在其中,并根据需要将其重新编码为 UTF-8 并转回。char32_t ch = U'ы';。 或者将符号直接以 UTF-8 格式存储在短字符串中。std::string ch = "ы";或者std::u8string ch = u8"ы";。
char8_t其行为大约类似于unsigned char,即存储从0到255的值。并且Unicode字符有超过一百万个。char8_t- 不是一个 UTF-8 符号(不是一个代码点),而是一个代码单元,即组成字符的字节之一(每个字符 1 到 4 个字节)。一般来说,
char8_t即使u8在生产线之前,它们也不是很有用。所有相同的内容都可以存储在 中char。有两种
椅子可供选择:您可以将字符编号
char32_t或类似内容存储在其中,并根据需要将其重新编码为 UTF-8 并转回。char32_t ch = U'ы';。或者将符号直接以 UTF-8 格式存储在短字符串中。
std::string ch = "ы";或者std::u8string ch = u8"ы";。