/*类型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;
}
|