寬字節轉多字節
WideCharToMultiByte
string W2AString(const wchar_t * str)
{
string re="";
int num = WideCharToMultiByte(
CP_ACP, // 轉換的格式
0, // 默認轉換方式
str, // 輸入字節
-1, // 字符串大小
0, // 輸出地址
0, // 輸出空間大小
0, // 失敗默認替換
false );
if (num<=0) return re;
char *data = new char[num+1]; // +1,保留\0
data[0]=0;
num = WideCharToMultiByte(
CP_ACP, // 轉換的格式
0, // 默認轉換方式
str, // 輸入字節
-1, // 字符串大小
data, // 輸出地址
num // 輸出空間大小
0, // 失敗默認替換
false);
if (num>0)
re = data;
delete data;
return re;
}
多字節轉寬字節
MultiByteToWideChar
char *str = " 多字節轉寬字節";
wstring A2WString(char* str)
{
CString re;
int num = MultiByteToWideChar(
CP_ACP, // 轉換的格式
0, // 默認轉換方式
str, // 輸入字節
-1, // 字符串大小
0, // 輸出地址
0 // 輸出空間大小
);
wstring re = L"";
if (num<=0)
return re;
// 申請空間
wchar_t *outStr = new wchar_t[num+1];//+1 保留\0
num = MultiByteToWideChar(
CP_ACP, // 轉換的格式
0, // 默認轉換方式
str, // 輸入字節
-1, // 字符串大小
outStr, // 輸出地址
num // 輸出空間大小
);
if (num>0)
re = outStr;
delete outStr;
return re;
}