std::string ANSI2UTF8(const std::string& strGBK)
{
wchar_t* str1;
int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, nullptr, 0);
str1 = new wchar_t[n];
MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);
n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, nullptr, 0, nullptr, nullptr);
char * str2 = new char[n];
WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, nullptr, nullptr);
std::string strUTF8(str2);
delete[]str1;
delete[]str2;
return strUTF8;
}
std::string UTF82ANSI(const std::string& strUTF8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, nullptr, 0);
unsigned short * str1 = new unsigned short[len + 1];
memset(str1, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (const char*)strUTF8.c_str(), -1, (LPWSTR)str1, len);
len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)str1, -1, nullptr, 0, nullptr, nullptr);
char *str2 = new char[len + 1];
memset(str2, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)str1, -1, str2, len, nullptr, nullptr);
std::string strGBK(str2);
delete[]str1;
delete[]str2;
return strGBK;
}
lstring string_format( const char *fmt,... )
{
std::string strResult="";
if (NULL != fmt)
{
va_list marker = NULL;
va_start(marker, fmt);
size_t nLength = _vscprintf(fmt, marker) + 1;
std::vector<char> vBuffer(nLength, '\0');
int nRet = _vsnprintf_s(&vBuffer[0], vBuffer.size(), nLength, fmt, marker);
if (nRet > 0)
{
strResult = &vBuffer[0];
}
va_end(marker);
}
return strResult;
}
lstring CStringToString(CString& cstr)
{
lstring str=cstr.GetBuffer(0);
cstr.ReleaseBuffer();
return str;
}
ANSI与UTF8转换
猜你喜欢
转载自blog.csdn.net/gao271003105/article/details/80935464
今日推荐
周排行