首页 > 解决方案 > 关于 c++ 中 char 数据类型的问题

问题描述

我理解“char”数据类型用于存储单个字符并使用 1 个字节,但 char16_t、char32_t 和 wchar_t 用于什么?毕竟,我们只需要存储一个字符

标签: c++

解决方案


关于char16_tand char32_t,引用微软文章

char16_t 和 char32_t 类型分别代表 16 位和 32 位宽的字符。编码为 UTF-16 的 Unicode 可以存储在 char16_t 类型中,编码为 UTF-32 的 Unicode 可以存储在 char32_t 类型中。这些类型的字符串和 wchar_t 都称为宽字符串,尽管该术语通常专门指 wchar_t 类型的字符串。

对于wchar_t

wchar_t 类型是实现定义的宽字符类型。在 Microsoft 编译器中,它表示一个 16 位宽的字符,用于存储编码为 UTF-16LE 的 Unicode,即 Windows 操作系统上的本机字符类型。通用 C 运行时 (UCRT) 库函数的宽字符版本使用 wchar_t 及其指针和数组类型作为参数和返回值,本机 Windows API 的宽字符版本也是如此。

所以不能简单的说他们是一个角色。如上所述,类型因编码而异。

例如,编码中的字符u(U+0075)char16_t存储为feff0075.


推荐阅读