18,356
社区成员
发帖
与我相关
我的任务
分享
ANSI to Unicode
wstring ANSIToUnicode( const string& str )
{
int len = 0;
len = str.length();
int unicodeLen = ::MultiByteToWideChar( CP_ACP,
0,
str.c_str(),
-1,
NULL,
0 );
wchar_t * pUnicode;
pUnicode = new wchar_t[unicodeLen+1];
memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));
::MultiByteToWideChar( CP_ACP,
0,
str.c_str(),
-1,
(LPWSTR)pUnicode,
unicodeLen );
wstring rt;
rt = ( wchar_t* )pUnicode;
delete pUnicode;
return rt;
}
#include <afxpriv.h>
#include <stdio.h>
char str[3]="汉";
wchar_t ws[2];
int main() {
USES_CONVERSION;
swprintf(ws,L"%s",A2W(str));
printf("%04hX\n",(unsigned short)ws[0]);
return 0;
}
//6C49
//
wchar_t* toUTF8(CString& str){
//char * pStr = (LPCSTR)(str.GetBuffer(str.GetLength()));; //取得str对象的原始字符串
//_CrtMemState s1, s2, s3;
//_CrtMemCheckpoint(&s1);
int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(str.GetBuffer(str.GetLength())), -1, NULL, 0); //取得所需缓存的多少
wchar_t *pBuffer = (wchar_t*)malloc(nBufferSize * sizeof(wchar_t));//申请缓存空间
//_CrtMemCheckpoint(&s2);
//if(_CrtMemDifference(&s3, &s1, &s2))
// _CrtMemDumpStatistics(&s3);
MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(str.GetBuffer(str.GetLength())), -1 , pBuffer, nBufferSize*sizeof(wchar_t));//转码
//MessageBoxW(NULL, pBuffer, L"Text", MB_OK); //显示
//free(pBuffer); //释放缓存
return pBuffer;
}