| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4328 人关注过本帖
标题:C++程序中CString显示是乱码!
只看楼主 加入收藏
theblur
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-8-29
收藏
 问题点数:0 回复次数:12 
C++程序中CString显示是乱码!
刚开始用VC2005,感觉很陌生,很多问题莫名其妙,首先在win32控制台程序里能够输出显示的字符串类型只有const char *,CString输出了奇怪的16进制码,我的测试程序如下:
  ----------------------------
  #include "stdafx.h"
  #include <iostream>
  #include <string>
  
  #define _AFXDLL
  
  #include <afx.h>
  
  
  using namespace std;
  
  
  int _tmain(int argc, _TCHAR* argv[])
  {
  
   CString cstring_str = "Hello!"; //CString
   cout << cstring_str << " " << "cstring" << endl
   <<"Input any integer continue..." << endl;
   int n; //display delay
   cin >> n;
  }
  ----------------------------
   程序未报错,但CString的输出是乱码,只有char能输出,为何?
搜索更多相关主题的帖子: CString 乱码 
2006-08-29 06:18
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

就C++的话字符串类是用string,CString是MFC类。。。


天行健,君子以自强不息!!QQ:68660681
2006-08-29 07:46
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

cout 的問題, (<<),

如果是要在控制台輸出, 樓主不妨試下下面的方法:

CString cstring_str = "hello";

printf("%ls", cstring_str);


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-29 08:17
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
CString不支持&lt;&lt; operator吧?人家有标准的转换(LPCSTR)或者GetBuffer什么的。最好不要强行访问内存。

http://myajax95./
2006-08-29 08:42
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
是有 &lt;&lt; 的,

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-29 08:43
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

cout << string_str <<
中, string_str 實際是 PCXSTR, 看 CSimpleStringT


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-29 08:45
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
还真有,不过不是对IOstream的。是Serilization或者dump用的。
friend CArchive&amp; operator &lt;&lt;( CArchive&amp; ar, const CString&amp; string );
throw( CArchiveException );

friend CArchive&amp; operator &gt;&gt;( CArchive&amp; ar, CString&amp; string );
throw( CArchiveException );

friend CDumpContext&amp; operator &lt;&lt;( CDumpContext&amp; dc, const CString&amp; string );


http://myajax95./
2006-08-29 08:45
lisypro
Rank: 4
等 级:业余侠客
威 望:3
帖 子:695
专家分:216
注 册:2005-9-25
收藏
得分:0 
use
cout <<(LPCSTR)CStringVarName;

长期承接管理系统
代做各种vb/ / vc小程序
QQ:82341763
手机:13623290828
群号 11619730
2006-08-29 16:32
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

??
cout << (LPCSTR)sv; 編譯無法通過 (VS2005)
cout << (LPCTSTR)sv; 與樓主問題沒有分別


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-29 16:47
theblur
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-8-29
收藏
得分:0 
谢谢大家,不管怎么说,用printf("%ls", cstring_str)的确解决问题了。但是我在网上看到的都是用cout来输出的,比如MSDN的文章,其中的字符串都用cout或wcout输出:
http://msdn2.microsoft.com/en-us/library/ms235631.aspx
是不是跟Unicode编码有关?还是?奇怪呢。
2006-08-30 08:28
快速回复:C++程序中CString显示是乱码!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041105 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved