📄 mystring.cpp
字号:
#include ".\mystring.h"
#using <mscorlib.dll>
bool Mystring::operator >=(Mystring c2)
{ if(*this>c2||*this==c2)return 1;else return 0;}
bool Mystring::operator >=(char *string)
{ if(*this>string||*this==string)return 1;else return 0;}
bool Mystring::operator <=(Mystring c2)
{ if(*this<c2||*this==c2)return 1;else return 0;}
bool Mystring::operator <=(char *string)
{ if(*this<string||*this==string)return 1;else return 0;}
bool Mystring::operator >(Mystring c2)
{ if(*this==c2)return 0;
else if(*this<c2)return 0;
else return 1;
}
bool Mystring::operator >(char *string)
{ if(*this==string)return 0;
else if(*this<string)return 0;
else return 1;
}
bool Mystring::operator <(Mystring c2)
{ if(*this==c2)return 0;
char *stri=str,*strr=c2.str;
while(*stri==*strr){stri++;strr++;}
if(*stri=='\0') return 1;//stri结束了strr还没有结束
else if(*strr=='\0') return 0;//strr结束了stri还没有结束
else if(*stri>*strr) return 0;//两个串的第一个不相等的字符stri大
else return 1;
}
bool Mystring::operator <(char *string)
{ if(*this==string)return 0;//相等
char *stri=str;
while(*stri==*string){stri++;string++;}
if(*stri=='\0') return 1;//stri结束了string还没有结束
else if(*string=='\0') return 0;//string结束了stri还没有结束
else if(*stri>*string) return 0;//两个串的第一个不相等的字符stri大
else return 1;
}
bool Mystring::operator !=(Mystring c2)
{ return !(*this==c2);}
bool Mystring::operator !=(char *string)
{ return !(*this==string);}
bool Mystring::operator ==(char *string)
{ Mystring buff(string);
if(*this==buff)return 1;
else return 0;
}
bool Mystring::operator ==(Mystring c2)
{ if(length==c2.length)
{int b=length;
char *stri=str,*strr=c2.str;
while(b)
{if(*stri!=*strr) return 0;b--;}
return 1;
}
else return 0;
}
Mystring::Mystring()
{ str=NULL;length=0;}//初始化为一个空串
Mystring Mystring::operator +=(Mystring c1)
{ *this=*this+c1;
return *this;
}
Mystring Mystring::operator +(Mystring c2)
{ Mystring buff;
char *strr,*stri;
buff.length=length+c2.length-1;//新的存储空间大小
if(!(buff.str=new char[buff.length]))exit(-1);//分配空间
stri=buff.str;strr=str;
while(*strr!='\0'){*stri=*strr;stri++;strr++;}
strr=c2.str;
while(*strr!='\0'){*stri=*strr;stri++;strr++;}
*stri='\0';
return buff;
}
Mystring Mystring::operator +(char *string)
{ Mystring buff(string);
return *this+buff;
}
//char * Mystring::operator <<(Mystring c1)
//{ return c1.str;}
void Mystring::Display()
{ cout<<str;}
char &Mystring::operator [](const int i)
{ if(i>=length)
{cout<<"Invalid array size";getch();exit(-1);}
else return *(str+i);
}
void Mystring::operator =(char *string)
{ Mystring buff(string);
*this=buff;
}
void Mystring::operator =(Mystring c2)
{ if(str)delete str;
if(!(str=new char[c2.length]))exit(-1);
char *stri=str;
char *strr=c2.str;
while(*strr!='\0')
{*stri=*strr;stri++;strr++;}
*(str+c2.length-1)='\0';
length=c2.length;
}
Mystring::Mystring(char *string)
{ int i=0;
char *strr=string;
while(*strr!='\0'){i++;strr++;}
length=i+1;
if(!(str=new char[i+1]))exit(-1);//分配内存失败
char *stri=str;
while(*string!='\0'){*stri=*string;stri++;string++;}
*stri='\0';
}
Mystring::Mystring(Mystring &string)
{ if(!(str=new char[string.Length()]))exit(-1);
char *stri=str;
char *strr=string.str;
while(*strr!='\0'){*stri=*strr;stri++;strr++;}
*stri='\0';length=string.length;
}
Mystring::~Mystring()
{ if(str)delete str;}
int Mystring::Length()
{ return length;}//返回字符串的长度
bool Mystring::isIn(char *word)
{
char a[64];//字符串最大长度64个
int i=0;
int j;
while(str[i])
{ j=0;
while(str[i]!=' '&&str[i] )
{
a[j]=str[i];
i++;j++;
}
a[j]='\0';
if(strcmp(a,word)==0) return 1;
while(str[i]==' ') i++;//虑掉空格字符
}
return 0;//didn't find
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -