C++在string类里添加求子串的成员函数,我写了代码,求改错。在线等
#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;}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;//晕! }};