重载操作符+出错
1. String operator+(const String &st1,const String &st2)
{
String temp;
temp.str=new char [st1.len+st2.len+1];
strcpy(temp.str,st1.str);
for(int i=0;i<st2.len+1;i++)
{
temp.str[st1.len+i+1]=st2.str[i];
}
return temp;
}
重载+号实现两段string接在一起,结果输入后光标闪动;
正确程序应该是:
String operator+(const String &st1,const String &st2)
{
int len = st1.len + st2.len;
char * ps = new char [len + 1];
std::strcpy(ps, st1.str);
std::strcat(ps,st2.str);
String temp(ps);
return temp;
}
困惑时第一段程序哪错了?验证中for循环没有错误
[解决办法]
temp.str[st1.len+i+1]=st2.str[i];
temp.str 里不应该加1,len是长度。单放置字符是重0开始。
[解决办法]
String operator+(const String &st1,const String &st2)
{
String temp;
temp.str=new char [st1.len+st2.len+1];
strcpy(temp.str,st1.str);
for(int i=0;i<st2.len+1;i++)
{
temp.str[st1.len+i]=st2.str[i];//这句错了。。不需要加1。。自己画个图就明白了。。
}
return temp;
}