跳转至

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