std::wstring MultiBytesToWString(const char* lpcszString)
{
if(lpcszString == NULL)
return L"";
int unicodeLen = ::MultiByteToWideChar(CP_ACP,0,lpcszString,-1,NULL,0);
wchar_t* pUnicode = new wchar_t[unicodeLen + 1];
memset((void*)pUnicode, 0 ,(unicodeLen + 1) * sizeof(wchar_t));
::MultiByteToWideChar(CP_ACP,0,lpcszString,-1,(LPWSTR)pUnicode, unicodeLen);
std::wstring wString = (wchar_t*)pUnicode;
delete[] pUnicode;
return wString;
}
std::string WStringToMultiBytes(const wchar_t* lpwcszWString)
{
if(lpwcszWString == NULL)
return "";
int mbLen = ::WideCharToMultiByte(CP_ACP,0,lpwcszWString,-1,NULL,0,NULL,NULL);
char *pMBText = new char[mbLen + 1];
memset((void*)pMBText, 0, (mbLen + 1) * sizeof(char));
::WideCharToMultiByte(CP_ACP,0,lpwcszWString,0,pMBText,mbLen,NULL,NULL);
std::string strTemp(pMBText);
delete[] pMBText;
return strTemp;
}
std::wstring UTF8ToWString(const char* lpcszString)
{
if(lpcszString == NULL)
return L"";
int unicodeLen = MultiByteToWideChar(CP_UTF8,0,lpcszString,-1,NULL,0);
wchar_t *pUnicode = new wchar_t[unicodeLen + 1];
memset((void*)pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t));
::MultiByteToWideChar(CP_UTF8,0,lpcszString,-1,(LPWSTR)pUnicode, unicodeLen);
std::wstring wString = (wchar_t*)pUnicode;
delete[] pUnicode;
return wString;
}
std::string WStringToUTF8(const wchar_t* lpwcszString)
{
if(lpwcszString == NULL)
return "";
int utf8Len = ::WideCharToMultiByte(CP_UTF8,0,(LPWSTR)lpwcszString,-1,NULL,0,NULL,NULL);
char *pUtf8Text = new char[utf8Len + 1];
memset((void*)pUtf8Text, 0, (utf8Len + 1) * sizeof(char));
::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszString, -1, pUtf8Text, utf8Len, NULL, NULL);
std::string strTemp(pUtf8Text);
delete[] pUtf8Text;
return strTemp;
}