📅  最后修改于: 2023-12-03 15:29:41.669000             🧑  作者: Mango
在 C/C++ 中,我们经常需要对字符进行编码转换。wcrtomb() 函数是一个将宽字符转换为多字节字符的函数。它将一个宽字符(或宽字符数组的一部分)编码成多字节字符,同时计算编码后的多字节字符的长度。
#include <wchar.h>
#include <stdlib.h>
size_t wcrtomb(char *dest, wchar_t wc, mbstate_t *state);
如果 wc 是一个空宽字符(L'\0'),则返回 0;如果发生错误,则返回 -1;如果 dest 不足以存储编码后的多字节字符,则返回 -2;否则,返回多字节字符的长度。
#include <cstdio>
#include <cwchar>
#include <cstring>
int main()
{
wchar_t wstr[] = L"测试";
char str[10];
mbstate_t state = {0};
size_t len = 0;
for (size_t i = 0; i < wcslen(wstr); ++i)
{
len = wcrtomb(str, wstr[i], &state);
if (len == -1)
{
printf("Error!");
break;
}
else if (len == -2)
{
printf("No sufficient space in the buffer!");
break;
}
for (size_t j = 0; j < len; ++j)
{
printf("%x ", (unsigned char)str[j]);
}
}
printf("\n");
return 0;
}