大家帮忙看看我的C++程序!问题在哪?

来源:百度知道 编辑:UC知道 时间:2024/06/02 02:39:29
#include <iostream.h>
#include <string.h>
class string
{
private: int length;
char * neirong;
public:
string(char *n,int i):length(i)
{
neirong=new char[strlen(n)+1];
strcpy(neirong,n);
}
~string()
{delete []neirong;}
void display();
int len();
void tianjia(char *a);
};

void string::display() {cout<<"neirong: "<<neirong<<endl;}
int string::len() {int n=strlen(neirong); return n;}
void string::tianjia(char *n)
{
neirong=new char[strlen(neirong)+strlen(n)+1];
strcat(neirong,n);
}

void main()
{
char s1[50],s2[10];
cin>>s1>>s2;
string string1(s1,20);
string1.display();
cout<<string1.len()<<endl;
string1.tianjia(s2);
string1.display();
}
运行了结果显示连接两字符时出乱码! 本题就是想输入两字符串 结果显示 第一个的内容和长度 然后把两个

在tianjia这个函数中重新初始化了neirong这个变量,下面是做过修改后的tianjia函数
void string::tianjia(char *n)
{ char *oldneirong;
oldneirong=new char[strlen(neirong)];
strcpy(oldneirong,neirong);
neirong=new char[strlen(neirong)+strlen(n)+1];
strcpy(neirong,oldneirong);
strcat(neirong,n);
}