string Utf8转ANSI
string Utf82Ansi(const char* utf8)
{
int WLength = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, NULL);
LPWSTR pszW = (LPWSTR)_alloca((WLength + 1) *sizeof(WCHAR));
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, pszW, WLength);
pszW[WLength] = 0;
int ALength = WideCharToMultiByte(CP_ACP, 0, pszW, -1, NULL, 0, NULL, NULL);
LPSTR pszA = (LPSTR)_alloca(ALength + 1);
WideCharToMultiByte(CP_ACP, 0, pszW, -1, pszA, ALength, NULL, NULL);
pszA[ALength] = 0;
return pszA;
}
char* Unicode2Utf8(const TCHAR* unicode)
{
int len;
len = WideCharToMultiByte(CP_UTF8, 0, (const wchar_t*)unicode, -1, NULL, 0, NULL, NULL);
char *szUtf8 = (char*)malloc(len + 1);
memset(szUtf8, 0, len + 1);
WideCharToMultiByte(CP_UTF8, 0, (const wchar_t*)unicode, -1, szUtf8, len, NULL, NULL);
return (char*)szUtf8;
}
BOOL WStringToString(const std::wstring &wstr, std::string &str)
{
int nLen = (int)wstr.length();
str.resize(nLen, ' ');
int nResult = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wstr.c_str(), nLen, (LPSTR)str.c_str(), nLen, NULL, NULL);
if (nResult == 0)
{
return FALSE;
}
return TRUE;
}
BOOL StringToWString(const std::string &str, std::wstring &wstr)
{
int nLen = (int)str.length();
wstr.resize(nLen, L' ');
int nResult = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)str.c_str(), nLen, (LPWSTR)wstr.c_str(), nLen);
if (nResult == 0)
{
return FALSE;
}
return TRUE;
}
Cstring 转string
CString cstr=L"AAAA";
CT2CA temptostr(cstr);
std::string str(temptostr);