C++ MFC string转Cstring为什么会乱码
前段时间学习mfc编了一个小程序,其中涉及到CString 与string的转换的时候感觉特别蛋疼,因此再此总结一下经验。希望能够对大家能有所帮助
通常有两种字符集模式 unicode字符集 和 ascii字符集,其中unicode有多种编码方式。utf8, utf16和utf32,还有 utf7, 再其中。utf8 和ascii编码兼容, 但是使用两个以上的字节存储中文等。 wstring实际上用的是宽字符。所有的字符都用两个字节存储(windows)。
stringg -> CString
通常的方法是
CString.format("%s", string.c_str());
但是 :
在vs2010 的情况下,是结果运行出来的是乱码,原因是CString.Format把string的每两个char当作一个wchar进行了转换,结果会是一串乱码。
网上各种大神们主要给出来以下几种解决方案
1.直接把设置改为多字符集即是项目->(项目)属性->配置属性->常规..里面有个字符集..字符集选成使用多字节字符集...(我用的是vs2010)这样直接跳过了字符转换,使用asci编码。如果不想费心的话可以这样试试
2. 在不修改字符集的情况下,Unicode编码使用用wstring,wcstring,wchar 推荐使用这样,因为unicode的界面明显美观且更为通用
3.使用MultiByteToWideChar函数,有关这个函数的说明可以去msdn上面去搜索
4.还有一种是ms提供的一种解决方法
ATL 7.0 中引入了相应的宏,建议自己去阅读msdn中相应的类容
CA2T szr(s.c_str());
CString = (LPCTSTR)szr;//(LPCTSTR)为强制类型转换
网上有人说这种方法不安全,主要是作用域的问题,具体我也不太明白
cstring to string
vs2010 Unicode下:
CStringW str(L"test");
CStringA stra(str.GetBuffer(0));
str.ReleaseBuffer();
std::string strs (stra.GetBuffer(0));
stra.ReleaseBuffer();
C++ MFC string转Cstring为什么会乱码相关推荐
- 如何解决string转CString乱码问题?
如何解决string转CString乱码问题? string str = "hello"; CString cstr = (CString)str.c_str();
- MFC中char*,string和CString之间的转换
string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的: char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的.所以熟练掌握三者之间的转换十 ...
- MFC中的CString类使用方法指南
MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...
- string与cstring区别
1.string与cstring有什么区别 是C++标准库头文件,包含了拟容器class std::string的声明(不过class string事实上只是basic_string的typedef) ...
- string/string.h/cstring头文件的区别摘要
1. #include <cstring> //不可以定义string s:可以用到strcpy等函数 using namespace std; #include <st ...
- 头文件 string.h cstring string 区别
1. #include <cstring> //不可以定义string s:可以用到strcpy等函数 using namespace std; #include <st ...
- java string的头文件_头文件 string.h cstring string 区别
1. #include //不可以定义string s:可以用到strcpy等函数 using namespace std; #include //可以定义string s:可以用 ...
- string和cstring头文件的区别
1.string与cstring有什么区别 <string>是C++标准库头文件,包含了拟容器class std::string的声明(不过class string事实上只是basic_s ...
- C++不区分大小写比较string类似CString.compareNoCase
使用transform();全转化为小写,然后对比string #include <string> #include <algorithm> using namespace s ...
最新文章
- android Intent onNewIntent 什么时候调用
- 学习笔记-Redis设计与实现-跳跃表
- 用ASP实现隐藏链接方法
- 适合程序员的四大字体
- 论管理员的不作为!!!
- 阿里DIN模型(深度兴趣网络)详解及理解
- crt 8.7.3 黑暗模式_科技有意思 | 黑黑黑黑黑黑黑黑暗模式
- Python元组的操作
- Python利用Spark并行处理框架批量判断素数
- 多行溢出文字省略号显示(HTML、CSS)
- Chrome浏览器安装Axure插件教程
- 联想Y450电源管理无法调节屏幕亮度的解决办法
- CAN总线的CRC校验
- 在线流程图和思维导图开发技术详解(三)
- Ubuntu18.04之微信中文乱码解决(五十八)
- 如何把本机的文件共享到VMware虚拟机
- python3+pyqt5实现简易机票预订系统
- V4L2视频驱动框架---v4l2_device管理模块简述
- 基于layui的动态添加条件查询ui插件
- java自定义排序函数_JAVA中sort函数的 自定义排序 cmp函数的写法 【java】【cmp】...
热门文章
- 【渝粤教育】国家开放大学2018年春季 0689-22T老年心理健康 参考试题
- [渝粤教育] 中国地质大学 数据结构 复习题 (2)
- 【渝粤教育】广东开放大学 地基与基础 形成性考核 (27)
- 【渝粤题库】陕西师范大学200851 微机实用技术
- 【渝粤题库】国家开放大学2021春1044合同法题目
- 内部时钟和外部时钟隔离的Σ-Δ调制器
- php时间格式函数,PHP函数之日期时间函数date()使用详解_php基础_脚本
- js清除添加的下拉框html,Html下拉框的定义以及JS、Jquary取值、添加和移除
- php同时抢购 代码,浅谈PHP实现大流量下抢购方案
- 通信工程施工图案例分析