string -->wstring
MultiByteToWideChar才是正确的转换方法,否则中文会乱码,后边有简单的方法~
wstring stringToWstring(const string& strDataCache)
{
if (strDataCache.empty())
{
return L"";
}
LPCSTR pszSrc = strDataCache.c_str();
int nLen = MultiByteToWideChar(CP_ACP, 0, pszSrc, -1, NULL, 0);
if (nLen < 0)
{
return L"";
}
wchar_t* pDataCache = new wchar_t[nLen];
if (!pDataCache )
{
return L"";
}
MultiByteToWideChar(CP_ACP, 0, pszSrc, -1, pDataCache , nLen);
wstring strDst(pDataCache);
return strDst;
}
string <-->const char*
wstring <-->const wchar_t*
//string -->char*
string strData("111");
const char* pStrData = strData.c_str();
//wstring -->wchar_t*
wstring wstrData(L"222");
const wchar_t* pWstrData = wstrData.c_str();
//const char* -->string
const char* pStrSrc = "biu";
string strSrc(pStrSrc);
//const wchar_t* -->wstring
const wchar_t* pwStrSrc = L"biu";
wstring strwSrc(pwStrSrc);
备注:
const char* --> char* const wchar_t* --> wchar_t*
使用 _tcscpy即可
string -->wchar_t*
1. string -- > wstring
2.wstring --> wchar_t*
wchar_t* --> string
1.wchar_t* --> wstring
2.wstring --> string
-----------2019年6月30日 更新------------------
//wchar_t* --> string
const wchar_t* szJson = L"中国";
USES_CONVERSION;
std::string strData = W2A(szJson);
//string --> wstring
string szTTTT("中国");
wstring szLLL = A2W(szTTTT.c_str());