现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

实践与总结:UniCode 下 CString 转 char* 的方法

2013-04-10 22:20 工业·编程 ⁄ 共 685字 ⁄ 字号 暂无评论

//test 1
CString str(_T("求索阁"));
int len = str.GetLength();
char* cstr = new char[len + 1];
cstr[len] = 0;
WideCharToMultiByte(CP_OEMCP,0,str,-1,cstr, len, NULL, NULL);

小结:test1是根据方法《CString、string 和char* 之间的转换总结》而来,当str为中文时,此法有误。

//test 2
CString str2(_T("求索阁"));
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,str2,-1,NULL,0,NULL,FALSE);
char *psText;
psText = new char[dwNum];
if(!psText)
{
    delete []psText;
}
WideCharToMultiByte (CP_OEMCP,NULL,str2,-1,psText,dwNum,NULL,FALSE);
delete []psText;
psText =NULL;

小结:test2是根据方法《MultiByteToWideChar和WideCharToMultiByte用法详解》而来。

//test 3
CString str3 = _T("求索阁");
//声明标识符
USES_CONVERSION;
//调用函数,T2A和W2A均支持ATL和MFC中的字符转换
char * pFileName = T2A(str3);   

小结:test2是根据方法《新手必看:UniCode 下 CString 转 char* 的方法》而来。

给我留言

留言无头像?