wstring ANSI_To_UNICODE(const char* pstr)
{
if (!pstr){
return L"";
}
DWORD dwLen = strlen(pstr) + 1;
char* pStr = NULL;
while (!pStr){
try{
pStr = new char[dwLen];
}
catch (const bad_alloc& e){}
}
memset(pStr, 0, dwLen);
sprintf(pStr, "%s", pstr);
int nLen = MultiByteToWideChar(CP_ACP, 0, pStr, -1, NULL, 0) + 2;
WCHAR *pWstr = NULL;
while (!pWstr){
try{
pWstr = new WCHAR[nLen];
}
catch (const bad_alloc& e){}
}
memset(pWstr, 0, nLen);
MultiByteToWideChar(CP_ACP, 0, pStr, dwLen, pWstr, nLen);
wstring wstrData = pWstr;
delete[] pStr;
delete[] pWstr;
return wstrData;
}
string UNICODE_TO_ANSI(const wchar_t *pstr)
{
if (!pstr){
return "";
}
DWORD dwLen = wcslen(pstr) + 1;
wchar_t *pwData = NULL;
while (!pwData){
try{
pwData = new wchar_t[dwLen];
}
catch (const bad_alloc& e){}
}
memset(pwData, 0, dwLen);
wsprintf(pwData, L"%s", pstr);
int nLen = WideCharToMultiByte(CP_ACP, 0, pwData, -1, NULL, 0, NULL, NULL) + 1;
char *pData = NULL;
while (!pData){
try{
pData = new char[nLen];
}
catch (const bad_alloc& e){}
}
memset(pData, 0, nLen);
WideCharToMultiByte(CP_ACP, 0, pwData, dwLen, pData, nLen, NULL, NULL);
string strData(pData);
delete[] pwData;
delete[] pData;
return strData;
}
string UNICODE_TO_UTF8(const wchar_t *pstr)
{
if (!pstr){
return "";
}
DWORD dwLen = wcslen(pstr) + 1;
wchar_t *pwData = NULL;
while (!pwData){
try{
pwData = new wchar_t[dwLen];
}
catch (const bad_alloc& e){}
}
memset(pwData, 0, dwLen);
wsprintf(pwData, L"%s", pstr);
int nLen = WideCharToMultiByte(CP_UTF8, 0, pwData, -1, NULL, 0, NULL, NULL) + 1;
char *pData = NULL;
while (!pData){
try{
pData = new char[nLen];
}
catch (const bad_alloc& e){}
}
memset(pData, 0, nLen);
WideCharToMultiByte(CP_UTF8, 0, pwData, dwLen, pData, nLen, NULL, NULL);
string strData(pData);
delete[] pwData;
delete[] pData;
return strData;
}
string ANSI_TO_UTF8(const string& strData)
{
char cData[1024] = { 0 };
wchar_t wcData[1024] = { 0 };
strcpy(cData, strData.c_str());
MultiByteToWideChar(CP_ACP, 0, cData, 1024, wcData, 1024);
memset(cData, 0, 1024);
WideCharToMultiByte(CP_UTF8, 0, wcData, 1024, cData, 1024, NULL, NULL);
string str = cData;
return str;
}
string UTF8_TO_ANSI(const string& strData)
{
char cData[1024] = { 0 };
wchar_t wcData[1024] = { 0 };
strcpy(cData, strData.c_str());
MultiByteToWideChar(CP_UTF8, 0, cData, 1024, wcData, 1024);
memset(cData, 0, 1024);
WideCharToMultiByte(CP_ACP, 0, wcData, 1024, cData, 1024, NULL, NULL);
string str = cData;
return str;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交