VC++ ANSI和Unicode互转,以及MultiByteToWideChar和WideCharToMultiByte用法!
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '/0';
(3)通过A2W宏来实现,例如:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
// 假设已经有了一个Unicode 串 wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL );
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
WideCharToMultiByte(CP_ACP, 0, wFileName, -1, cFileName, iLen, NULL, NULL);
uchNameLength = iLen;
ANSI和Unicode互转
最新推荐文章于 2017-07-24 13:46:58 发布
本文介绍了VC++中ANSI与Unicode之间的转换方法,包括使用宏、MultiByteToWideChar及WideCharToMultiByte函数的具体步骤。并给出了实践验证过的正确示例。
将ANSI转换到Unicode
以上为网上找到的方法,经过实践证明,MultiByteToWideChar函数的使用比较个性正确的用法应该如下:
int iLen = WideCharToMultiByte(CP_ACP, 0, wFileName, -1, NULL, 0, NULL, NULL);
wFileName为宽字符数组,包含实际的字符。
cFileName 存放转换后的字符。
由上可以看出,需要先获取wFileName 数组中实际存放的字符数。然后进行转换,并将转换后的字符长度存储于uchNameLength变量中。
1467

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



