自己经常用的两个函数,废话不多说直接上代码:
wstring AnsiToUnicode(const string& Ansi)
{
wstring Result(L"");
if (Ansi.empty())
{
return Result;
}
int nChar = MultiByteToWideChar(CP_ACP, 0, Ansi.c_str(), -1, NULL, 0);
int nSize = nChar * sizeof(wchar_t) + 1;
wchar_t* pwchBuffer = new wchar_t[nSize];
nChar = MultiByteToWideChar(CP_ACP, 0, Ansi.c_str(), -1, pwchBuffer, nSize);
if (nChar == 0)
{
delete[] pwchBuffer;
return Result;
}
pwchBuffer[nChar] = 0;
Result = pwchBuffer;
delete[] pwchBuffer;
return Result;
}
string UnicodeToAnsi(const wstring& Unicode)
{
string Result("");
if (Unicode.empty())
{
return Result;
}
int nChar = WideCharToMultiByte(CP_ACP, 0, Unicode.c_str(), -1, 0, 0, 0, 0);
int nSize = nChar + 1;
char* pchBuffer = new char[nSize];
nChar = WideCharToMultiByte(CP_ACP, 0, Unicode.c_str(), -1, pchBuffer, nSize, 0, 0);
if (nChar == 0)
{
delete[] pchBuffer;
return Result;
}
pchBuffer[nChar] = 0;
Result = pchBuffer;
delete[] pchBuffer;
return Result;
}
以上