膜拜大佬,转载自:https://www.codersrc.com/archives/10881.html
#include "stdafx.h"
#include <stdio.h>
#include "windows.h"
#include <Locale.h>
// char 转为 wchar_t
wchar_t * char2wchar(const char* cchar)
{
wchar_t *m_wchar;
int len = MultiByteToWideChar(CP_ACP, 0, cchar, strlen(cchar), NULL, 0);
m_wchar = new wchar_t[len + 1];
MultiByteToWideChar(CP_ACP, 0, cchar, strlen(cchar), m_wchar, len);
m_wchar[len] = '\0';
return m_wchar;
}
// wchar_t 转为 char
char * wchar2char(const wchar_t* wchar)
{
char * m_char;
int len = WideCharToMultiByte(CP_ACP, 0, wchar, wcslen(wchar), NULL, 0, NULL, NULL);
m_char = new char[len + 1];
WideCharToMultiByte(CP_ACP, 0, wchar, wcslen(wchar), m_char, len, NULL, NULL);
m_char[len] = '\0';
return m_char;
}
int main()
{
setlocale(LC_ALL, "chs"); // 本地化语言设置为中文,否则中文乱码
char* szSrc1 = "C/C++教程-猿说编程";
wchar_t* szSrc2 = L"C/C++教程-猿说编程";
wchar_t* szDst1 = char2wchar(szSrc1);
char* szDst2 = wchar2char(szSrc2);
//输出多字节字符串用 printf
printf("宽字节字符串 szSrc2 转为多字节字符串结果:%s \n", szDst2);
//输出宽字节字符串用 wprintf
wprintf(L"多字节字符串 szSrc1 转为宽字节字符串结果:%s\n", szDst1);
//释放内存
free(szDst1);
free(szDst2);
system("pause");
return 0;
}