宽字节:Unicode,其字符采用16bit编码,代表:WCHAR
多字节:ASNI ,其字符采用8bit编码,代表:CHAR
一、宽字符转多字节字符
Unicode转 ASNIWCHAR 转 CHAR
方法1:W2A函数
#include <atlconv.h>
//函数中
char s1[20]="";WCHAR w[]=L"宽字符“;
USES_CONVERSION ;//宏
char* pa=W2A(w);//返回一个 ASNI标准的多字节字符
strcpy(s1,pa);
方法2: WideCharToMultiByte函数
WCHAR wText[] = L"宽字符";
DWORD dwNum;
CHAR psText[256];//多字节字符
dwNum = sizeof(wText);//获取字串长度 dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE);
WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, psText, dwNum, NULL, FALSE);
二、多字节字符转宽字符
CHAR 转WCHARASNI 转 Unicode
方法1:利用CString
WCHAR ws[]=L"宽字符“;
char s1[22]="摘自付2";
CString str=s1;
wcscpy(ws,str.GetBuffer());//此时,ws就变为s1的内容了
str.ReleaseBuffer();
方法2:A2W函数
char s1[20] = "字节字符";WCHAR w[20];
USES_CONVERSION;//宏
WCHAR* pa = A2W(s1);wcscpy(w,pa);
方法3:MultiByteToWideChar函数
CHAR sText[] = "abc";
WCHAR pwText[256];
DWORD dwNum = sizeof(sText);//获取字串长度,业余做法
//DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0); //获取字串长度,专业做法
MultiByteToWideChar(CP_ACP, 0, sText, -1, pwText, dwNum);