当前位置: C语言 -- 标准库 -- <uchar.h> -- char32_t

char32_t类型


描述:

该类型是无符号整数类型,用于表示32位字符,与unit_least32_t类型是相同类型。

如果实现定义了宏__STDC_UTF_32__char32_t类型字符应遵循UTF-32编码规则。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
/*类型char32_t范例*/

#include <locale.h>
#include <stddef.h>
#include <stdio.h>
#include <uchar.h>

#define LENGTH 20

int main(void)
{
    setlocale(LC_CTYPE, "");
    
    static mbstate_t mbs;
    const char32_t *UPtr = U"上海";
    char arr[LENGTH];       //存储多字节字符序列的数组。
    char *ptr = arr;        
    size_t number;          //存储c32rtomb函数的返回值。

    /*32位宽字符序列转换为多字节字符序列。*/
    while(*UPtr)
    {
        number = c32rtomb(ptr, *UPtr, &mbs);
        if(number == (size_t)(-1))
        {
            puts("Error: illegal sequence.");
            break;
        }

        ++UPtr;         //指向下一个宽字符。
        ptr += number;  //指向存储下一个多字节字符序列的位置。
    }
    
    /*输出存储的多字节字符序列的值。*/
    for(ptrdiff_t i=0; i<ptr-arr; ++i)
    {
        printf("%X ", (unsigned char)arr[i]);
    }
    
    return 0;
}


输出:

E4 B8 8A E6 B5 B7

注:使用Visual Studio编译。


相关内容:
size_t 表示sizeof运算符运算结果的无符号整数类型。
char16_t 用于16位字符的无符号整数类型。