问一个visual C++的问题

[复制链接]
 楼主| 将军令 发表于 2007-12-17 08:17 | 显示全部楼层 |阅读模式
问一个visual&nbsp;C++的问题<br /><br />CString&nbsp;指针怎么赋值呀?<br /><br />比如我有一个子函数,入口参数有一个CSTRING&nbsp;指针<br />void&nbsp;calc_string(int&nbsp;k,&nbsp;CString&nbsp;*str)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;eee;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(k==1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee=&quot;microsoft&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee=&quot;Borland&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;str=eee;&nbsp;//这样不能赋值,我是想让str把计算出来的eee带回到主函数去。应该怎么写呀?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />如果不是指针,就好办多了,直接写str=eee就可以了。但是这样母函数的值不会变。<br /><br />目前我是用最古老的char*指针解决了问题;<br />可是,如果非要用CString来返回值,函数语句要怎么写呀?<br />类似的,我如果用CArray指针代入值函数,比如CArray&nbsp;*arr;<br />那我要给arr的第N个单元赋值也会有同样的麻烦.<br />&nbsp;
mohanwei 发表于 2007-12-17 09:05 | 显示全部楼层

(*str)=eee;简易恶补一下c/c++。VC++不是语言

  
lag3631 发表于 2007-12-17 11:13 | 显示全部楼层

可以使用strcpy函数

  
 楼主| 将军令 发表于 2007-12-17 12:19 | 显示全部楼层

2楼的办法我试过了,好像不行哦

这是对象指针,被重载过的操作符<br /><br />3楼&nbsp;的strcpy我用过了,可以,但是我就想知道对象指针怎么玩
 楼主| 将军令 发表于 2007-12-17 12:23 | 显示全部楼层

来自CSDN的答案

CString一般是不用指针的,用引用,微软的MFC函数都是这么用的。&nbsp;<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calc_string(int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&str)&nbsp;&nbsp;&nbsp;<br />{&nbsp;&nbsp;&nbsp;<br />CString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee;&nbsp;&nbsp;&nbsp;<br />if(k==1)&nbsp;&nbsp;&nbsp;<br />eee=&quot;microsoft&quot;;&nbsp;&nbsp;&nbsp;<br />else&nbsp;&nbsp;&nbsp;<br />eee=&quot;Borland&quot;;&nbsp;&nbsp;&nbsp;<br />str=eee;&nbsp;<br /><br />}
bob.xue 发表于 2007-12-17 15:15 | 显示全部楼层

直接用return不更简单一些吗?

  
mohanwei 发表于 2007-12-17 17:24 | 显示全部楼层

那是你的条件没说明,可能你只在外面定义了一个指针

而没有定义对象……<br /><br />像下面这样做是没有问题的:<br />void&nbsp;return_cstring(int&nbsp;flag,CString&nbsp;*str_test)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;eee;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(flag)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee=&quot;aaaaaaaaaaaaa&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee=&quot;bbbbbbbbbb&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;(*str_test)=eee;<br />}<br /><br />在外面:<br />CString&nbsp;str_test=&quot;&quot;;<br />return_cstring(1,&str_test);<br /><br />执行函数后,str_test=&quot;aaaaaaaaaaaaa&quot;<br /><br /><br /><br /><br />如果你在外面只定义了一个指针,想返回人家函数内部的局部变量,是不可能的。函数一返回,局部变量就销毁了。
李冬发 发表于 2007-12-17 19:43 | 显示全部楼层

你非要用指针就得这样用

void&nbsp;calc_string(int&nbsp;k,&nbsp;CString&nbsp;*str)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;CString&nbsp;eee;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(k&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee&nbsp;=&nbsp;&quot;microsoft&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eee&nbsp;=&nbsp;&quot;Borland&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;&eee;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

937

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

180

主题

937

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部