打印

问一个visual C++的问题

[复制链接]
1953|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
将军令|  楼主 | 2007-12-17 08:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问一个visual C++的问题

CString 指针怎么赋值呀?

比如我有一个子函数,入口参数有一个CSTRING 指针
void calc_string(int k, CString *str)
{
    CString eee;
    if(k==1)
        eee="microsoft";
    else
        eee="Borland";
    str=eee; //这样不能赋值,我是想让str把计算出来的eee带回到主函数去。应该怎么写呀?
        
}
如果不是指针,就好办多了,直接写str=eee就可以了。但是这样母函数的值不会变。

目前我是用最古老的char*指针解决了问题;
可是,如果非要用CString来返回值,函数语句要怎么写呀?
类似的,我如果用CArray指针代入值函数,比如CArray *arr;
那我要给arr的第N个单元赋值也会有同样的麻烦.
 

相关帖子

沙发
mohanwei| | 2007-12-17 09:05 | 只看该作者

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

使用特权

评论回复
板凳
lag3631| | 2007-12-17 11:13 | 只看该作者

可以使用strcpy函数

使用特权

评论回复
地板
将军令|  楼主 | 2007-12-17 12:19 | 只看该作者

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

这是对象指针,被重载过的操作符

3楼 的strcpy我用过了,可以,但是我就想知道对象指针怎么玩

使用特权

评论回复
5
将军令|  楼主 | 2007-12-17 12:23 | 只看该作者

来自CSDN的答案

CString一般是不用指针的,用引用,微软的MFC函数都是这么用的。 
void       calc_string(int       k,       CString       &str)   
{   
CString       eee;   
if(k==1)   
eee="microsoft";   
else   
eee="Borland";   
str=eee; 

}

使用特权

评论回复
6
bob.xue| | 2007-12-17 15:15 | 只看该作者

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

使用特权

评论回复
7
mohanwei| | 2007-12-17 17:24 | 只看该作者

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

而没有定义对象……

像下面这样做是没有问题的:
void return_cstring(int flag,CString *str_test)
{
    CString eee;
    if(flag)
    {
        eee="aaaaaaaaaaaaa";
    }
    else
    {
        eee="bbbbbbbbbb";
    }
    (*str_test)=eee;
}

在外面:
CString str_test="";
return_cstring(1,&str_test);

执行函数后,str_test="aaaaaaaaaaaaa"




如果你在外面只定义了一个指针,想返回人家函数内部的局部变量,是不可能的。函数一返回,局部变量就销毁了。

使用特权

评论回复
8
李冬发| | 2007-12-17 19:43 | 只看该作者

你非要用指针就得这样用

void calc_string(int k, CString *str)
{
    static CString eee;
    if(k == 1)
        eee = "microsoft";
    else
        eee = "Borland";
    str = &eee;        
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

937

帖子

1

粉丝