CString转const char*和char* 转CString遇到的小挫折

1 篇文章 0 订阅
1 篇文章 0 订阅

本人用的VS2017,昨天晚上学习进程间通信时,按照@yangchuankai博主所写码,但问题出现在strcpy(pBuf,str),提示:

不存在CString转换成const char*的函数

于是在网上找了一番,有些不行,最好的方法是在项目属性—C/C++—预处理器—预处理器定义,那一栏最后添加_CRT_SECURE_NO_WARNINGS 

要用分号隔开!分号隔开!分号隔开!

然后再在strcpy(pBuf,str)函数前加上这一句代码

        CStringA strA(str.GetBuffer(0));
        str.ReleaseBuffer();
        string s = strA.GetBuffer(0);
        const char* str1 = s.c_str();

当然,后面就要改成strcpe(pBuf,str1);

 

然后是char*转CString:

虽然是char*转CString,系统有时会提示char*转LPCTSTR,一样的道理。下面是代码:

从其他博主查到有两种方法:

char* a1 = "xxxx";

CString b = a1;

(LPCTSTR)a2 = (LPCTSTR)b;

SetDlgItemText(IDC_RICHEDIT2_RECIEVE, a2);

可是编译还是报错,提示CString b = a1出错,

error C2440: “初始化”:

无法从“char *”转换为“ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>”

于是试了第二种方法:

char* a1 = "xxxx";

CString b(a1);

(LPCTSTR)a2 = (LPCTSTR)b;

SetDlgItemText(IDC_RICHEDIT2_RECIEVE, a2);

OK,编译通过!

小白暂时不懂这两种区别,还请指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值