首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++在string类里添加求子串的成员函数,小弟我写了代码,求改错

2012-05-21 
C++在string类里添加求子串的成员函数,我写了代码,求改错。在线等C/C++ code#includeiostream#includecs

C++在string类里添加求子串的成员函数,我写了代码,求改错。在线等

C/C++ code
#include<iostream>#include<cstdlib>#include<cstring>#define MAX_LEN 100using namespace std;class String{    char* str;public:    String()    {        str=NULL;    }    String(const char *p)    {        str=new char[strlen(p)+1];        strcpy(str,p);    }    ~String()    {        delete[] str;        str=NULL;    }    const char *get_str(){return str;}    String substring(int start,int length)//取从位置start开始,长度为length的子串    {        String sub;        char* p=new char[length+1];//晕!        if((int)strlen(str)<start+length)        {            cout<<"子串位置超出原字符串长度!"<<endl;            return sub;        }        for(int i=start-1;i<start+length-1;i++)        {            p[i-start+1]=str[i];        }        String sub2(p);        return sub2;//晕!    }};int main(){    char *p1=new char[MAX_LEN];    cout<<"请输入字符串S1:";    cin.getline(p1,MAX_LEN-1);    String s1(p1);    int start,length;    cout<<"请输两个整数(起始位置、子串长度):";    cin>>start>>length;    String sub(s1.substring(start,length));    cout<<"在S1中搜寻结果为:\n"<<sub.get_str()<<endl;    return 0;}

不会改,求指正啊。

[解决办法]
C/C++ code
class String{    char* str;public:    String()    {        str=NULL;    }    String(const char *p)    {        str=new char[strlen(p)+1];        strcpy(str,p);    }    ~String()    {        delete[] str;        str=NULL;    }    const char *get_str(){return str;}    String(const String& obj)    {        str = new char[strlen(obj.str)+1];        strcpy(str,obj.str);    }    String substring(int start,int length)//取从位置start开始,长度为length的子串    {        String sub;        char* p=new char[length+1];//晕!        if((int)strlen(str)<start+length)        {            cout<<"子串位置超出原字符串长度!"<<endl;            return sub;        }        for(int i=start-1;i<start+length-1;i++)        {            p[i-start+1]=str[i];        }        p[start+length-1]='\0';        String sub2(p);        return sub2;//晕!    }}; 

热点排行