CString,char[]有什么区别啊?

苏克贝塔03 2010-07-21 02:29:43
CString ,char[]。
能不能
CString s;
char *p=s;
...全文
69 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Daveee 2010-07-21
char不支持运算符重载嚒
回复
xingpacer 2010-07-21
[Quote=引用楼主 jichao1010 的回复:]
CString ,char[]。
能不能
CString s;
char *p=s;
[/Quote]
s是CString类的对象,p是char字符串指针,是不能这样操作的,可以这么处理:
(1)非Unicode版本:p = s.GetBuffer(0);
(2)Unicode版本:s.GetBuffer(0)内容是宽字符串,而p是窄字符串指针,所以要将s.GetBuffer(0)内容转化一下,才能赋给p
回复
王军鹏 2010-07-21
CString是一个类,可以进行许多操作,其初始化为CString str("xx");也可以用等号进行初始化,因为其内部对=进行了重载;CString 转化成 char* 之一:强制类型转换为 LPCTSTR;
CString转化成char* 之二:使用 CString 对象的 GetBuffer 方法
回复
王军鹏 2010-07-21
[Quote=引用 2 楼 visualeleven 的回复:]
CString s;
char *p=s;
-------------
囧,你见过有这么写的吗?
[/Quote]
牛人,7月也拿第一吧!
回复
逗比汪星人 2010-07-21
肯定不行咯...

    CString str    = "Hello World !";
char *pTemp = new char[str.GetLength()];
strcpy(pTemp,str.GetBuffer(str.GetLength()));
printf("pTemp = %s",pTemp);

回复
Eleven 2010-07-21
Unicode编码下也有问题。。。
回复
Eleven 2010-07-21
CString s;
char *p=s;
-------------
囧,你见过有这么写的吗?
回复
wltg2001 2010-07-21
[Quote=引用楼主 jichao1010 的回复:]
CString ,char[]。
能不能
CString s;
char *p=s;
[/Quote]
不行,编译通不过的,写成char *p=s.GetBuffer(s.GetLength());
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告