中易网

C++的字符串相加问题

答案:1  悬赏:30  
解决时间 2021-03-14 07:09
# include <iostream.h>class string{private: char *str;public: string(char *s=""); string operator + (string &s); void show();};

# include "string.h"string::string(char *s){str=s;}void string::show(){ cout<<str<<endl;}string string::operator + (string &s){ char *t1=new char,*t2=t1,*s1=this->str,*s2=s.str; while(*s1!='\0') { *t1=*s1;t1++;s1++; } while(*s2!='\0') { *t1=*s2;t1++;s2++; } *t1='\0'; string t(t1); return t;}void main(){ string s1("zhang"),s2("jiang"),s3; s3=s1+s2; s1.show(); s2.show(); s3.show();}

运行结果为这个,怎么回事不显示S3啊?



最佳答案
看得出来,刚学C++不久,还需要了解内存空间分配,指针的概念

在做字符串连接时,需要明白再进行字符操作时,是在内存空间上操e799bee5baa6e59b9ee7ad9431333335336434作的,没内存空间是不行的

按照你的思路
修改后代码
# include <iostream.h>
# include "string.h"

class string
{
private:
char *str;
public:
string(char *s="");
string operator + (string &s);
void show();
};

string::string(char *s)
{
str = new char[strlen(s) + 1];
strcpy(str, s);
}

void string::show()
{
cout<<str<<endl;
}

string string::operator + (string &s)
{
//计算两个字符串长度之和
int length = strlen(this->str) + strlen(s.str);
//重新分配保存字符串的空间
char *t1=new char[length + 1];

//原来this->str部分复制进新分配空间
strcpy(t1, this->str);
//尾部再连接参数s的字符串,即把s中数据复制进t1后面
strcpy(t1 + strlen(this->str), s.str);

//释放掉原来空间
//这里有点问题构造函数需要修改
delete str;
str = t1;

return t1;
}
void main()
{
string s1("zhang"),s2("jiang"),s3("");
s3=s1+s2;
s1.show();
s2.show();
s3.show();
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
神武不是变异宠物怎么染饰品颜色啊?????
阚家屯大泡子我想知道这个在什么地方
关于实习生毕业向单位请假的问题!
天津工业大学新校区里的建设银行具体网点是什
比30的40%还多15,这个数是多少
某同学测定盐水的密度,实验数据如下: 实验次
我马上初三,我从初二才开始打篮球,有一个篮
南宁六职校男生宿舍有插排的吗,,仙湖校区的
tong(第二声) kui (第一声) 组词
用gho安装器重装系统,提示重启后还原系统,
珊瑚浦辉实验小学(东北门)地址在什么地方,想
华为mate2的手机卡怎么装
武汉哪里有卖变形金刚的.
为什么万达广场的白领公社的衣服比网上的贵
交警抽血不想化验 最多能延迟几天
推荐资讯
送男朋友抱枕代表什么
我一打开任何图片,就会出现这种情况,看图片
男主比女主大二十岁左右 文笔好的现代养成文
盘锦德顺商贸有限公司地址在什么地方,想过去
没有教师资格证可以到幼儿园实习吗?(大学我
东方燕拉丁·舞蹈俱乐部我想知道这个在什么地
我的世界工业2为什么内置合成表里没有
道路交通责任划分 急!!!!!!!!!!!!!!
我的皮肤特别容易过敏有绿豆皮会不会过敏啊
怎么彻底删除cad2014安装文件
迷砂里面的内鬼是谁
日默瓦行李箱 libom和salsa deluxe哪个好
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?