美文网首页
现代 C 字符串编码

现代 C 字符串编码

作者: Platanuses | 来源:发表于2023-01-03 00:40 被阅读0次

    本文更新至 C23。

    字符类型

    • signed char:有符号 8 位字符类型。
    • unsigned char:无符号 8 位字符类型。通常也用作底层内存结构的 byte 表达。
    • char:8 位字符类型。与 int 类型族的常规不同,charsigned char 是不同的类型。与 signed charunsigned char 性质相同。
    • wchar_t:位宽足以表示任何宽字符的字符类型。通常为 16 位无符号整型。
    • char8_t:(C23 起)8 位无符号字符类型。表示一个 UTF-8 的编码。
    • char16_t:(C11 起)16 位无符号字符类型。
    • char32_t:(C11 起)32 位无符号字符类型。

    与 C++ 不同, wchar_tchar8_tchar16_tchar32_t 不是关键字,而通常是 typedef。

    字符串类型

    字符串字面量可使用以下前缀:

    • L:通常是 UTF-16 编码,字符类型为 wchar_t。如 L"是我"(wchar_t[]){ 0x662f, 0x6211, 0 }
    • u8:(C11 起)UTF-8 字符串,字符类型为 char,或 C23 起 char8_t。如 u8"是我"(char8_t[]){ 0xe6, 0x98, 0xaf, 0xe6, 0x88, 0x91, 0 }
    • u:(C11 起)16 位宽字符串,通常(或 C23 起必然)是 UTF-16 编码,字符类型为 char16_t。如 u"是我"(char16_t[]){ 0x662f, 0x6211, 0 }
    • U:(C11 起)32 位宽字符串,通常(或 C23 起必然)是 UTF-32 编码,字符类型为 char32_t。如 U"是我"(char32_t[]){ 0x0000662f, 0x00006211, 0 }

    相关文章

      网友评论

          本文标题:现代 C 字符串编码

          本文链接:https://www.haomeiwen.com/subject/yogkcdtx.html