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);
本文详细介绍了不同字符编码之间的转换方法,包括从UTF-8到ANSI、从Unicode到UTF-8以及string和wstring之间的相互转换。通过具体的代码实现,帮助读者理解如何在不同编码间进行有效转换。
536

被折叠的 条评论
为什么被折叠?



