C++:char、wchar_t、char8_t、char16_t char32_t

本文介绍了C++中的不同字符类型,包括char、unsigned char、wchar_t、char8_t、char16_t和char32_t。char类型通常用于ASCII或ISO-8859字符,而wchar_t在Microsoft编译器中代表UTF-16LE的宽字符。C++20引入的char8_t适用于UTF-8编码,char16_t和char32_t则分别对应UTF-16和UTF-32编码。文章还提到了这些类型在标准库中的使用,如std::string、std::u8string等。

C++:char、wchar_t、char8_t、char16_t char32_t

简介

类型 char 、、 wchar_t 、 char8_t char16_t 和 char32_t 是内置类型,这些类型表示字母数字字符、非字母数字的标志符号和非打印字符。

语法

char     ch1{ 'a' };  // or { u8'a' }
wchar_t  ch2{ L'a' };
char16_t ch3{ u'a' };
char32_t ch4{ U'a' };

备注

char 类型为 C 和 c + + 中的原始字符类型。 char 类型可用于存储 ASCII 字符集中的字符或任意 ISO-8859 字符集,以及单个字节的多字节字符(例如,shift-jis 或 Unicode 字符集的 utf-8 编码)。 在 Microsoft 编译器中, char 是一个8位类型。 它是和中的不同类型 signed char unsigned char 。 默认情况下,类型的变量 char 将提升为, int signed char 除非 /J 使用编译器选项。 在下 /J ,它们被视为类型 unsigned char 并提升为, int 无需签名扩展名。

类型 unsigned char 通常用于表示一个字节,该 字节 不是 c + + 中的内置类型。

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

char8_t、 char16_t 和 char32_t 类型分别表示8位、16位和32位宽字符。 (char8_t 是 c + + 20 中的新项,需要 /std:c++latest 编译器选项。以 utf-8 编码的 ) Unicode 可以存储在 char8_t 类型中。 char8_t 和类型的字符串 char 称为 窄 字符串,即使用于编码 Unicode 或多字节字符。 以 UTF-16 编码的 unicode 可以存储在 char16_t 类型中,而编码为 utf-32 的 unicode 可以存储在 char32_t 类型中。 这些类型的字符串 wchar_t 都被称为 宽 字符串,但术语通常是专门引用类型为的字符串 wchar_t 。

在 c + + 标准库中, basic_string 类型专用于窄字符串和宽字符串。 当字符为类型时,请使用,当字符为类型时,当字符为类型时,则使用; 当字符类型为时使用 std::string char std::u8string char8_t std::u16string char16_t std::u32string char32_t std::wstring wchar_t 。 表示文本的其他类型,包括 std::stringstream 和 std::cout 的专用化的窄字符串和宽字符串。

该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处
本文章博客地址:https://blog.youkuaiyun.com/it_cplusplus/article/details/118191097

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值