string转CString乱码问题,简单解决,不需要修改多字符集
有效
string a = “hello”;
CString str = (CString)a.c_str();
待验证
void CAboutVersionDlg::ReadStringCharToUnicode(CString &str)
{
char *szBuf = new char[str.GetLength() + 1];//注意“+1”,char字符要求结束符,而CString没有
memset(szBuf, '\0', str.GetLength());
int i;
for (i = 0; i < str.GetLength(); i++)
{
szBuf[i] = (char)str.GetAt(i);
}
szBuf[i] = '\0';//结束符。否则会在末尾产生乱码。
int nLen;
WCHAR *ptch;
CString strOut;
if (szBuf == NULL)
{
return;
}
nLen = MultiByteToWideChar(CP_ACP, 0, szBuf, -1, NULL, 0);//获得需要的宽字符字节数
ptch = new WCHAR[nLen];
memset(ptch, '\0', nLen);
MultiByteToWideChar(CP_ACP, 0, szBuf, -1, ptch, nLen);
str.Format(_T("%s"), ptch);
if (NULL != ptch)
delete[] ptch;
ptch = NULL;
if (NULL != szBuf)
delete[]szBuf;
szBuf = NULL;
return;
}