MFC中CString转为char*;char*转为CString

一、char*转为CString

如果工程使用多字节字符集

CString str;
char sz[]="你好!";
str.Format("%s",sz);//利用Format函数
str=(CString)sz;    //强制转换

如果工程使用Unicode字符集

 第一种是使用API函数MultiByteToWideChar进行转换

char * pFileName = "世界,你好!";
//计算char *数组的大小,以字节为单位,一个汉字占两个字节
int charLen = strlen(pFileName);
//计算多字节字符的大小,按字符计算
int len = MultiByteToWideChar(CP_ACP, 0, pFileName, charLen, NULL, 0);
//为宽字节字符数组申请空间大小,数组大小为按字节计算的多字节字符的大小
TCHAR *buf = new TCHAR[len + 1];
//多字节编码转换为宽字节编码
MultiByteToWideChar(CP_ACP, 0, pFileName, charLen, buf, len);
buf[len] = '\0';
//将TCHR数组转换为CString
CString str;
str.Append(buf);
//删除缓冲区
delete[]buf;

 第二种方法是使用函数A2T或A2W;

char *p = "世界,你好!";
USES_CONVERSION;//这个宏在atlbase.h中定义
CString s = A2T(p);
CString s2 = A2W(p);

二、CString转为char*

 如果工程使用多字节字符集

CString str="长城";
char *p=(LPSTR)(LPCTSTR)str;//强制转换
p=str.GetBuffer();

如果工程使用Unicode字符集

 第一种是使用API函数WideCharToMutiByte进行转换

CString str = _T("世界,你好!");

//n以字符计算,len以字节计算,二者数值不同
int n = str.GetLength();
int len = WideCharToMultiByte(CP_ACP, 0, str, str.GetLength(), NULL, 0, NULL, NULL);

char * pFileName = new char[len + 1];
//宽字节编码转换成多字节编码
WideCharToMultiByte(CP_ACP, 0, str, str.GetLength(), pFileName, len, NULL, NULL);

pFileName[len] = '\0';//多字节字符串以\0结束

  第二种方法是使用函数A2T或A2W;

CString str = _T("世界,你好!Hello World");
USES_CONVERSION;//这个宏在atlbase.h中定义
char *p = T2A(str);
char *q = W2A(str);

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值