C++ MFC mfc中string转cstringg为什么会乱码

2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
2010年12月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。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)//(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();
本分类共有文章6篇,更多信息详见
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";请问vs2010中string转换为CString之后用messagebox输出是乱码_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:282,702贴子:
请问vs2010中string转换为CString之后用messagebox输出是乱码收藏
请问怎么弄啊!!!有人说是unicode的问题~~~string na="asd";CString name.Format(_T("%s"), na.c_str());我是这么转的
凯德集团越南项目上海展出,越南房产仅30%可售予外国人
MultiByteToWideChar、WideCharToMultiByte相互转换,或者直接用std::wstring
string na="asd";CString name(na);
CString感觉有问题,一个函数里单独使用没问题,传参马上SB用std::string吧,最后c_str()输出
string na=&asd&;CString name.Format(_T(&%s&), na.c_str());——来自 诺基亚 Lumia 920
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或19:57 提问
CString类型(汉字)转换为wchar_t类型时显示的为乱码
如题,从编辑框中提取汉字,取出为CString类型的,将此变量转换为wchar____t类型的变量,显示出来为乱码,但是当输入的为英文字母时,显示的就是正确的,不知道问题出现在哪里,求大神指点
部分程序:
按赞数排序
最简单的将你的工程设置为Unicode编码的。
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
_tsetlocale(LC_ALL, _T("chs")); //加上这句,没加的话可能乱码
USES_CONVERSION;
WCHAR wStr[] = L"王小二";
wprintf(L"UNICODE Str = %s\n", wStr);
printf("W2A Convert = %s\n", W2A(wStr));
_tprintf(_T("W2T Convert = %s\n"), W2T(wStr));
CHAR aStr[] = "李大麻";
printf("MBCS Str = %s\n", aStr);
wprintf(L"A2W Convert = %s\n", A2W(aStr));
_tprintf(_T("A2T Convert = %s\n"), A2T(aStr));
_tsystem(_T("PAUSE"));
nText是字符,设置成数组或指针都可,指针的话先分配内存
问题大致解决了,设置成Unicode编码的可以,但是如果这样设置,我的程序太大需要改好多东西,因为用的是vc6.0,也不能兼容,将这部分程序转到vc2008中就好使了
问题大致解决了,设置成Unicode编码的可以,但是如果这样设置,我的程序太大需要改好多东西,因为用的是vc6.0,也不能兼容,将这部分程序转到vc2008中就好使了
其他相似问题}

我要回帖

更多关于 cstring和string 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信