#include <STDLIB.H>
#include <LOCALE.H>
#include <Windows.h>
int main(int argc, char* argv[])
{
setlocale(LC_ALL,""); // 否则无法输出中文
char ansiStr[] = "这是一个ANSI字符串";
printf( "ansiStr: %s\n", ansiStr );
wchar_t wideStr[] = L"这是一个UNICODE字符串";
wprintf( L"wideStr: %s\n", wideStr );
// 转换ANSI字符串到UNICODE字符串
int len = MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, NULL, 0); // 先取得转换后的UNICODE字符串所需的长度
wchar_t* buf1 = (wchar_t*)calloc(len, sizeof(wchar_t)); // 分配缓冲区
MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, buf1, len); // 开始转换
wprintf(L"转换后的UNICODE字符串: %s\n", buf1); // 输出转换后的字符串
free(buf1); // 释放缓冲区
// 转换UNICODE字符串到ANSI字符串
len = WideCharToMultiByte(CP_ACP, 0, wideStr, -1, NULL, 0, NULL, NULL); // 先取得转换后的ANSI字符串所需的长度
char* buf2 = (char*)calloc(len, sizeof(char)); // 分配缓冲区
WideCharToMultiByte(CP_ACP, 0, wideStr, -1, buf2, len, NULL, NULL); // 开始转换
printf("转换后的ANSI字符串: %s\n", buf2); // 输出转换后的字符串
free(buf2); // 释放缓冲区
return 0;
}