1. ASC编码转Unicode编码
void ConvertMultiToWide(LPCSTR lpstr, int size, CStringW& csWide)
{
//计算字符长度
int nCount = MultiByteToWideChar(CP_ACP, 0, lpstr, size, NULL, 0);
//分配内存
wchar_t* sConver = new wchar_t[nCount + 1];
SecureZeroMemory(sConver, _countof(sConver));
//转换
MultiByteToWideChar(CP_ACP, 0, lpstr, size, sConver, nCount);
csWide.Empty();
csWide.Format(_T("%s"), sConver);
delete[] sConver;
}
或
void ConvertMultiToWide(LPCSTR lpstr, CStringW& csWide)
{
CStringA csMulti(lpstr);
csWide.Empty();
int iStrLen = MultiByteToWideChar(CP_ACP, 0,
csMulti.GetBuffer(), csMulti.GetLength(),
NULL, 0);
MultiByteToWideChar(CP_ACP, 0,
csMulti.GetBuffer(), csMulti.GetLength(),
csWide.GetBuffer(iStrLen), iStrLen);
csMulti.ReleaseBuffer();
csWide.ReleaseBuffer(iStrLen);
}
2. Unicode编码转ASC编码
void ConvertWideToMulti(LPCWSTR lpwstr, CStringA& csMulti)
{
CStringW csWide(lpwstr);
csMulti.Empty();
int iStrLen = WideCharToMultiByte(CP_UTF8, 0,
csWide.GetBuffer(), csWide.GetLength(),
NULL, 0,
NULL, NULL);
WideCharToMultiByte(CP_UTF8, 0,
csWide.GetBuffer(),csWide.GetLength(),
csMulti.GetBuffer(iStrLen), iStrLen,
NULL, NULL);
csWide.ReleaseBuffer();
csMulti.ReleaseBuffer(iStrLen);
}
本文提供了两种字符串编码转换的方法:一种是从ASCII编码转换为Unicode编码,另一种是从Unicode编码转换回ASCII编码。通过使用C++实现的具体函数,展示了如何进行这两种转换,并确保了转换过程中数据的完整性和正确性。
566

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



