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是什么编码是没有明确判定依据的。