从事实时计算多年,熟悉jstorm/spark/flink/kafka/rocketMq, 热衷于开源,希望在这里和前辈们一起学习与分享,得到长足的进步!邮箱:hustfxj@gmail.com 我的githup地址是:https://github.com/hustfxj。欢迎和大家一起交流探讨问题。
分类: C/C++
2014-02-18 15:06:03
A2BSTR | OLE2A | T2A | W2A |
A2COLE | OLE2BSTR | T2BSTR | W2BSTR |
A2CT | OLE2CA | T2CA | W2CA |
A2CW | OLE2CT | T2COLE | W2COLE |
A2OLE | OLE2CW | T2CW | W2CT |
A2T | OLE2T | T2OLE | W2OLE |
A2W | OLE2W | T2W | W2T |
2 |
好搞笑的缩写,to 的发音和 2 一样,所以借用来表示“转换为、转换到”的含义。 |
A |
ANSI 字符串,也就是 MBCS。 |
W、OLE |
宽字符串,也就是 UNICODE。 |
T |
中间类型T。如果定义了 _UNICODE,则T表示W;如果定义了 _MBCS,则T表示A |
C |
const 的缩写 |
方法二:使用WideCharToMultiByte和MultiByteToWideChar
使用一个例子说明:
下面是将 strText 中的unicode字符串转换成ASC||方法 ,也是CString 转换为char * 的方法
char *lText;
int iTexLen;
iTextLen=WideCharToMultiByte(CP_ACP,0,strText,-1,NULL,0,NULL,0);/确定strText中的CString转换为ASCII后,所需的字节数
lText=(char*)calloc(iTextLen,sizeof(char)); // 分配空间
memset(lText,0,iTextLen*sizeof(char)); //初始化空间
WideCharToMultiByte(CP_ACP,0,strText,-1,lText,iTextLen,NULL,0); // 将strText中的字符串全部转换成ASCII,并将其保存在lText开辟的字符空间中
file.Write(lText,iTextLen); // 将转换好的ASCII文字串 保存到文件中
file.Close();
free(lText);
CString
MFC中的CString包含有构造函数和接受Unicode串的赋值操作,所以你可以用CString来实现转换。例如:
// 假设有一个Unicode串wszSomeString...
CString str1 ( wszSomeString ); // 用构造器转换
CString str2;
str2 = wszSomeString; // 用赋值操作转换