char8_t
char8_t
是表示 utf-8 编码的字符,是一种全新的类型,存储如同 unsigned char
类型,但和 unsigned char
不是同一个类型。
- 示例
int main()
{
// char8_t和unsigned char不是同一种类型
constexpr bool b=std::is_same_v<unsigned char, char8_t>;//false
// 在c++20后u8前缀字符指的的chart8_t类型
const char8_t *str_u8=u8"hello world!";
// 在c++20前使用成功,但在c++20里面错误
const char *str=u8"hello world!";//error,invalid conversion from 'const char8_t*' to 'const char*'
}
1 为什么需要 char8_t 类型
- 参考
- char8_t 是 unsigned char 的,而 char 是否有符号是由平台和编译器决定的。( ARM and PowerPC are typically unsigned, the defaults for x86 and x64 are typically signed)
- char8_t 是 utf-8 编码,而 char 是什么编码是没有明确判定依据的。