c++ - 关于 c++ 中 char 数据类型的问题
问题描述
我理解“char”数据类型用于存储单个字符并使用 1 个字节,但 char16_t、char32_t 和 wchar_t 用于什么?毕竟,我们只需要存储一个字符
解决方案
关于char16_t
and 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
.
推荐阅读
- azure - Azure Policy:作用于相同标记名称的两个策略冲突
- http - 这是对用户进行身份验证的安全方式吗?
- reactjs - 如何创建可重用(React ↔ React Native)组件?
- sql - 将 JSON 对象的键值对放入单独的列中
- flutter - 我可以在不更改后端功能的情况下更新 Flutter 应用程序的 UI 吗?
- android - Android从前台应用程序启动后台服务
- java - 使用 Apache Camel 和 Spring Boot 调用 SOAP Web 服务
- javascript - 函数工作结束后是否所有局部变量都保留?
- spring - Spring Cloud Function Webflux 反应式供应商
- python - 无法在 for 循环中通过 scrapy 刮取子页面,我在这里错过了什么吗?