📅  最后修改于: 2023-12-03 14:40:25.211000             🧑  作者: Mango
mbtowc
是一个用于将多字节字符转换成宽字符的C函数。它的原型如下:
#include <stdlib.h>
int mbtowc(wchar_t * __restrict__ pwc, const char * __restrict__ s, size_t n);
其返回值为成功转换的字符数,如果无法转换或者遇到了无效的多字节字符,将返回-1。
需要注意的是,这个函数需要依赖本地的区域设置(locale),因为不同的字符编码和本地化环境会影响字符的表示和转换。
以下是一个简单的示例,演示如何使用mbtowc
函数将GB2312编码的字符转换成宽字符:
#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>
int main() {
setlocale(LC_ALL, "zh_CN.gb2312");
char gb_string[] = "中文字符";
wchar_t wc_buf[128] = {0};
int n = mbtowc(wc_buf, gb_string, sizeof(gb_string));
if (n == -1) {
fputs("无效的多字节字符序列\n", stderr);
exit(EXIT_FAILURE);
}
wprintf(L"转换结果为:%ls\n", wc_buf);
return 0;
}