+ -
当前位置:首页 → 问答吧 →  变量追加空间大小

变量追加空间大小

时间:2011-12-15

来源:互联网

void Mystring::operator+(Mystring & ms)
{  
  char *str2 = new char[strlen(this->str) + strlen(ms.str) + 2];
  strcpy(str2, this->str);
  strcat(str2,ms.str);
  this->str = new char[strlen(str2) + 2];
  strcpy(this->str, str2);
  delete [] str2;
}
各位大侠 我想直接通过把变量str的空间追加怎么追加?

作者: zengmin135   发布时间: 2011-12-15

对str执行realloc,输入参数大小为追加后的大小,然后执行strcat~

不过一样会拷贝先前的值,效率和你现在的代码差不多,只是步骤上简化一些,看看realloc函数的介绍你就明白了~

作者: mscf   发布时间: 2011-12-15

送佛送到西,直接给出代码,没有测试

作者: mscf   发布时间: 2011-12-15

[code=C]\C++
void Mystring::operator+(Mystring & ms)
{
  this->str = realloc(this->str,strlen(this->str) + strlen(ms->str) + 2);//此后可以检查this->str是否为NULL,避免运行时申请内容失败,进行错误处理
  strcat(this->str,ms->str);
}
[/code]

作者: mscf   发布时间: 2011-12-15

http://blog.csdn.net/qscool1987/article/details/7035826
可以参考下
你这里有问题
1.你这样加了之后被加的string改变了
2.不能连加

作者: qscool1987   发布时间: 2011-12-15

C/C++ code
 
void Mystring::operator+(Mystring & ms) 
{ 
  this->str = realloc(this->str,strlen(this->str) + strlen(ms->str) + 2);//此后可以检查this->str是否为NULL,避免运行时申请内容失败,进行错误处理 
  strcat(this->str,ms->str); 
} 

作者: mscf   发布时间: 2011-12-15

C/C++ code

friend String operator + (const String &sorig,const String sdest); 
String operator + (const String &sorig,const String sdest)  
{  
    size_t Lengthorig = sorig.size();  
    size_t Lengthdest = sdest.size();  
    char *pt = new char[Lengthorig+Lengthdest+1];  
    char * porig = sorig.pc;  
    char * pdest = sdest.pc;  
    memcpy(pt,porig,Lengthorig);  
    pt[Lengthorig] = '\0';  
    strcat(pt,pdest);  
    pt[Lengthorig+Lengthdest] = '\0';  
    String Strtemp(pt);  
    cout << Strtemp << endl;  
    delete [] pt;  
    return Strtemp;  
}  

作者: qscool1987   发布时间: 2011-12-16