void Mystr::czz(char *t)//查找指定字符串,输出所有位置(例:在“abdefcdefgdef”中找所有“def”的位置) { int i=0,j=0,m=0; //m表示位置
while(str[i]!='\\0') //循环条件,从头到尾找全所有的“def” { if(str[i]==t[j]) //第一次循环,判定两者的第一个字符是否相同,若相同,继续判定第二个是否相同,直到所有的都相同 { i++;j++; if(t[j]=='\\0') //找到一次,输出当前位置,继续下次循环 { cout< int i,j=0,m=0; char *p; p=new char[strlen(str)+1]; for(i=0;str[i]!='\\0';i++) { if(str[i]!=s) { p[j]=str[i]; j++; } } p[j]='\\0'; delete str; str=p; } 部分字符串操作 #include \"iostream.h\" #include \"string.h\" #include \"stdio.h\" class Mystr { public: Mystr(); Mystr(char *p); Mystr(Mystr& a); void display(); ~Mystr(){ delete str; } void Cat(char *p); // void Cat(Mystr x); void Cat(Mystr &x); void operator =(Mystr &x); void operator =(char *p); int getlen(); // void operator +(Mystr &x); friend Mystr operator +(Mystr c1,Mystr c2); friend ostream & operator << (ostream & out,Mystr& d) {out< void Mystr::edit() { int i=0,n=strlen(str); while(str[i]!='\\0') { if(str[i]>='0'&&str[i]<='9') { if(str[i+1]>='0'&&str[i+1]<='9') i++; else { Insc(i+1,'$'); i++; } } else i++; } } void Mystr::translate() { char *p=str; int n=strlen(p),i; for(i=0;i void Mystr::rev() { int i,n; char t,*s=str; n=strlen(s); for(i=0;i void Mystr::set(int x,char ch) { char *p=str; int n=strlen(p); if(x<=0||x>n){cout<<\"!!!!\"< char *p=str; int n,i,j=0,t=0; char *s; n=strlen(p); for(i=0;i void Mystr::del_right() { int n,i,j=0,t=0,k; char *s,*p=str; n=strlen(p); k=n; while(p[k-1]==' ') { k--; j++; } s=new char[n-j+1]; for(i=0;i char *p=str; int n,i,j=0; n=strlen(p); while(p[j]==' ')j++; for(i=0;i char *p=str; int i,k; k=strlen(p); if(x<=k&&x>=1) { for(i=x-1;i void Mystr::Insc(int m,char ch) { int n=strlen(str); char *p; p=new char[n+2]; for(int i=0;i void Mystr::Insp(int m,char *p) { int n=strlen(str),l=strlen(p); char *t; t=new char[l+n+1]; for(int i=0;i int Mystr::found(char *t) { char *s=str; int i,j,k,m=-1; for(i=0;s[i]!='\\0';i++) { k=i; for(j=0;t[j]!='\\0' && s[k]!='\\0' && s[k++]==t[j];j++); if(t[j]=='\\0') { m=i; break; } } return m;//没找到输出-1 } */ int Mystr::found(char *t) { int i=0,j=0,m=0; while(str[i]!='\\0'&&t[j]!='\\0') { if(str[i]==t[j]) { i++; j++; } else { m++; i=m; j=0; } } if(t[j]!='\\0') m=-1; return m; } double Mystr::strtof() { char *p=str; double a,d=0,w=10; int i=0,t=1; if(p[i]=='+') { t=1;i++;} if(p[i]=='-') { t=-1;i++;} while(p[i]!='\\0' && p[i]!='.') { if(p[i]<'0' || p[i]>'9') { cout<if(p[i]=='.') i++; a=d;d=0; while(p[i]!='\\0') { if(p[i]<'0' || p[i]>'9') { cout<int Mystr::strtoi() { char *p=str; int d=0,i=0,t=1; if(p[i]=='+') { t=1;i++;} if(p[i]=='-') { t=-1;i++;} while(p[i]!='\\0') { if(p[i]<'0' || p[i]>'9') { cout<<\"!!!!\"< char Mystr::operator [](int x) { return str[x]; } int Mystr::getlen() { int n=0; char *p=str; while(*p++)n++; return n; } /*void Mystr::operator +(Mystr &x) { char *s; s=new char[strlen(str)+strlen(x.str)+1]; strcpy(s,str); strcat(s,x.str); delete str; str=s; } */ Mystr operator +(Mystr c1,Mystr c2) { Mystr p; char *s; s=new char[strlen(c1.str)+strlen(c2.str)+1]; strcpy(s,c1.str); strcat(s,c2.str); p.str=s; return p; } /* void Mystr::Cat(Mystr x) { char *p; p=new char[strlen(this->str)+strlen(x.str)+1]; strcpy(p,this->str); strcat(p,x.str); delete this->str; this->str=p; } */ void Mystr::Cat(char *p) { char *s; s=new char[strlen(this->str)+strlen(p)+1]; strcpy(s,this->str); strcat(s,p); delete this->str; this->str=s; } void Mystr::Cat(Mystr &x) { char *p; p=new char[strlen(this->str)+strlen(x.str)+1]; strcpy(p,this->str); strcat(p,x.str); delete this->str; this->str=p; } void Mystr::display() { cout< Mystr::Mystr(char *p) { int n=strlen(p); str=new char[n+1]; strcpy(str,p); } Mystr::Mystr(Mystr& a) { int n=strlen(a.str); str=new char[n+1]; strcpy(str,a.str); } void main() { Mystr t1(\"abccccccccc\"); t1.Del('c');t1.display();} 因篇幅问题不能全部显示,请点此查看更多更全内容