MFC学习记录003——VS2012DLL项目中String 转换CString

在VS2012的MFCDLL项目中,遇到窗体上的EditControl控件显示中文乱码的困扰。尝试了多种方法,包括直接使用string对象的c_str()、通过CString的Format函数转换,但都未能成功。最终,通过将字符串先转换为宽字符型的CString,再设置到EditControl中,成功解决了乱码问题。
摘要由CSDN通过智能技术生成

工具:VS2012

项目类型:MFC DLL项目

问题简述:DLL里面有个窗体,窗体上有几个“Edit Control” 控件,然后“Edit Control”添加了控件变量“m_edit",用于存放控制“Edit Control”的显示内容的数据,但是我试了好多,显示出来都是乱码

参考链接:vs2017下关于MFC中string用CString中Format转换出现乱码错误

错误尝试一:

string str = "Hello 世界";
m_edit12.SetWindowText(str4.c_str());
 //报错”Const char*"类型的实参与“LPCTSTR"类型的形参不兼容

错误尝试二:

string str = "hello 世界";
CString CS1;
CS1.Format(_T("%s"),str);
m_edit12.SetWindowText(CS1);
//编译没报错,但是显示乱码

错误尝试三:

string str = "hello 世界";
CString CS1;
CS1.Format(_T("%s"),str.c_str());
m_edit12.SetWindowText(CS1);
//编译没报错,但是显示乱码(PS:与上一个尝试的乱码内容不一样)

正确方法:

string str = "hello 世界";	
CString CS1;
char c[20];	
strcpy_s(c, str.c_str());
CS1.Format(_T("%s"),CStringW(c));
m_edit12.SetWindowText(CS1);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值