在做字符串连接时,需要明白再进行字符 *** 作时,是在内存空间上 *** 作的,没内存空间是不行的
按照你的思路
修改后代码
# include <iostreamh>
# include "stringh"
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(sstr);
//重新分配保存字符串的空间
char t1=new char[length + 1];
//原来this->str部分复制进新分配空间
strcpy(t1, this->str);
//尾部再连接参数s的字符串,即把s中数据复制进t1后面
strcpy(t1 + strlen(this->str), sstr);
//释放掉原来空间
//这里有点问题构造函数需要修改
delete str;
str = t1;
return t1;
}
void main()
{
string s1("zhang"),s2("jiang"),s3("");
s3=s1+s2;
s1show();
s2show();
s3show();
}这个问题用vbnet比较简单
在text1里输入12
85
74
69
73
91
65
在text2里输入第一个数+第二个数
我这个方法的前提是:
text1里的每个数必需由空格分隔
text2里的文本要用+分隔
----------------------------------------------------------
dim
t1()
as
string
dim
t2()
as
string
dim
t1l,
i
as
integer
dim
temp
dim
r
as
integer,
rs
as
string
'用split函数分隔用户的输入
t1
=
split(text1text,
"
")
t2
=
split(text2text,
"+")
'获取数组t1中一共有几个元素
for
each
temp
in
t1
t1l
=
t1l
+
1
next
'直接开始相加
for
each
temp
in
t2
r
=
r
+
t1(i)
rs
=
rs
&
t1(i)
&
"+"
i
=
i
+
1
next
'显示结果
rs
=
left(rs,
len(rs)
-
1)
rs
=
rs
&
"="
&
r
text3text
=
rs
----------------------------------------------------------
代码就是这样,缺点就是不是说在text2中输入第一个数+第二个数才可以加,输入a+b也可以加#include<stringh>
char a[]="abc";
char b[]="def";
strcat(a,b);
这样就会把b 接到a的后面了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)