C++取子字符串

来源:百度知道 编辑:UC知道 时间:2024/05/23 13:25:38
如何编写的一个成员函数实现取子字符串。
例如定义一个类String,在它类里面定义一个函数String &subString(int index);取index后面的所有字符然后返回一个String,请问应该如何实现呢?
看下面的代码有什么问题
if(index>this->length || index<=0)
return *this;
char *buffer;
buffer=new char[this->length-index+1];
int i=0;
while(this->m_string[index]!='\0')
{
buffer[i++]=this->m_string[index++];
}
buffer[i]='\0';
//delete []buffer;
MString temp(buffer);
return temp; //some problems
//return *new MString(buffer);
在main函数退出的时候出现非法操作,提示Debug Error.

比较乱。算法还可以。
//delete []buffer;
MString temp(buffer);
return temp; //some problems
//return *new MString(buffer);
这几句可能导致了内存的二次释放,或者是空指针,内存泄露。

与你的String数据实现有关吧!
设数据为char *str;

String &subString(int index)
{
char *ch=&str[index];
char *str2;
str2 =new char[strlen(ch)+1];
strcpy(str2,ch);
return new String(str2);

}