C语言中的MultiByteToWideChar
和WideCharToMultiByte
函数是用来在宽字符和多字节字符之间进行转换的。下面是它们的用法:
int MultiByteToWideChar(
UINT CodePage, // 字符编码方式
DWORD dwFlags, // 转换标志
LPCSTR lpMultiByteStr, // 多字节字符串
int cbMultiByte, // 多字节字符串的字节数
LPWSTR lpWideCharStr, // 宽字符字符串
int cchWideChar // 宽字符字符串的字符数
);
CP_UTF8
表示UTF-8编码,也可以使用其他编码方式。int WideCharToMultiByte(
UINT CodePage, // 字符编码方式
DWORD dwFlags, // 转换标志
LPCWSTR lpWideCharStr, // 宽字符字符串
int cchWideChar, // 宽字符字符串的字符数
LPSTR lpMultiByteStr, // 多字节字符串
int cbMultiByte, // 多字节字符串的字节数
LPCSTR lpDefaultChar, // 用于表示无法转换的字符的默认字符
LPBOOL lpUsedDefaultChar // 用于指示是否使用了默认字符
);
CP_UTF8
表示UTF-8编码,也可以使用其他编码方式。注意事项:
SetDefaultDllDirectories
函数,并使用LOAD_LIBRARY_SEARCH_SYSTEM32
标志来加载所需的动态链接库kernel32.dll
。示例代码:
#include <windows.h>
int main()
{
char mbstr[100] = "Hello, 你好!";
wchar_t wcstr[100];
// 将多字节字符串转换为宽字符字符串
MultiByteToWideChar(CP_UTF8, 0, mbstr, -1, wcstr, sizeof(wcstr)/sizeof(wcstr[0]));
// 在宽字符字符串后面添加一些文本
wcscat(wcstr, L" 世界!");
// 将宽字符字符串转换为多字节字符串
char mbstr2[100];
WideCharToMultiByte(CP_UTF8, 0, wcstr, -1, mbstr2, sizeof(mbstr2)/sizeof(mbstr2[0]), NULL, NULL);
printf("%s\n", mbstr2);
return 0;
}
这个例子中,首先将一个多字节字符串转换为宽字符字符串,然后在宽字符字符串后面添加一些文本,最后再将宽字符字符串转换为多