1、String类的实现#include#include#include#include#includeusing namespace std;class i_stringprivate: char *str; int len;public: /构造函数 i_string(); i_string(); i_string(i_string &); i_string(char *); i_string(char ); i_string(int ); i_string(char *,int ); i_string(char ,int ); i_string(i_string& ,int);public:
2、 /位数控制输出 void Sci_out(int ); void Sci_outln(int ); void Sci_out(); void Sci_outln();public: /功能函数 int length() return len; char* begin() return &str0; char* end() return &strlen; char* Str() return str; void insert(int ,char *); void insert(int ,char); void insert(int ,i_string &); void reserve(); v
3、oid reserve(int,int); void swap(int ,int); void remove(char); void remove(int,int,char); void remove(char*); void remove(int ,int, char*); void remove(int ); void remove(int,int); void erase(char*); void erase(int ); i_string substring(int,int); i_string substring(int); _int64 valueof(); _int64 valu
4、eof(int,int); void reset(); friend void swap(char*,char*); friend void swap(char&,char&); friend void Reset(char*); friend void Reserve(char*); friend void get_next(char*,int*); friend _int64 valueof(i_string &); friend _int64 valueof(char *); friend int valueof(char ); bool empty(); bool Figure();
5、void clear();public: /值运算函数 i_string add(i_string &); i_string add(char *); i_string add(char ); i_string add(int ); i_string add(_int64); i_string mul(i_string &); i_string mul(char *); i_string mul(char ); i_string mul(int ); i_string mul(_int64 ); i_string sub(i_string &); i_string sub(char *); i
6、_string sub(char ); i_string sub(int ); i_string sub(_int64 );public: /运算符重载 i_string &operator =(i_string &); i_string &operator =(char *); i_string &operator =(char ); bool operator (i_string &); bool operator = (i_string &); bool operator = (i_string &); bool operator != (i_string &); void operat
7、or += (i_string &); void operator += (char *); void operator += (char ); i_string operator * (int ); i_string operator (int); i_string operator + (i_string & ); i_string operator + (char *); i_string operator + (char ); i_string operator (int );public: /特殊运算符 friend istream & operator ( istream &is
8、, i_string &ch ) isch.str; ch.len=strlen(ch.str); return is; friend ostream & operator (ostream &os , i_string &ch ) osch.str; return os; char* operator + (int i) return &stri; char &operator (int i) const return stri; ;/ 构造函数 /i_string:i_string() str=new char1; len=0; str0=NULL;i_string:i_string()
9、delete str;i_string:i_string(char *s) len=strlen(s); str=new charlen+1; strcpy(str,s); strlen=NULL;i_string:i_string(char c,int n) len=n; str=new charlen+1; for(int i=0;ilen;i+) stri=c; strlen=NULL;i_string:i_string(char c) len=1; str=new char2; str0=c; str1=NULL;i_string:i_string(int n) len=n; str=
10、new charlen+1; for(int i=0;in;i+) stri=0; strlen=NULL;i_string:i_string(i_string &i_str) len=i_str.len; str=new charlen+1; strcpy(str,i_str.str); strlen=NULL;i_string: i_string(char *s,int n) int k=strlen(s); len=n*k; str=new charlen+1; for(int i=0;ik;i+) for(int j=0;jn;j+) strj*k+i=si; strlen=NULL;
11、i_string: i_string(i_string& ch,int n) len=n*ch.len; str=new charlen+1; for(int i=0;ich.len;i+) for(int j=0;jn;j+) strj*ch.len+i=ch.stri; strlen=NULL;/输出函数/void i_string:Sci_out(int w) i_string i_str(*this); i_str.reset(); if(w=0) coutOutput error=len) couti_str.str; else int op=0; if(i_str.str0=-)
12、op=1,w+; i_string s(i_str.substring(w); if(i_str.strw5) couts.str0; if(s.str0=-) cout1+op) cout.; couts.str+(1+op)*e0?s.sub(1):s.add(1); if(ks.len) i_str.len+; s.remove(s.len); couts.str0; if(s.str0=-) cout1+op) cout.; couts.str+(1+op)*eSci_out(w); coutSci_out(1);void i_string:Sci_outln() this-Sci_o
13、ut(1); coutendl;/ 运算符重载 /i_string& i_string:operator =(i_string &ch) if(this!=&ch) str=new charch.len+1; strcpy(str,ch.str); len=ch.len; strlen=NULL; return *this;i_string& i_string:operator =(char *ch) str=new charstrlen(ch)+1; strcpy(str,ch); len=strlen(ch); strlen=NULL; return *this;i_string& i_s
14、tring:operator =(char c) str=new char2; str0=c;len=1; strlen=NULL; return *this; void i_string:operator +=(i_string &ch) int k1=len,k2=ch.len; str=(char*)realloc(str,(k2+k1+1)*sizeof(char); for(int i=0;ik2;i+) strk1+i=ch.stri; len=k1+k2; strlen=NULL; void i_string:operator += (char *ch) int k1=len,k
15、2=strlen(ch); str=(char*)realloc(str,(k2+k1+1)*sizeof(char); for(int i=0;ik2;i+) strk1+i=chi; len=k1+k2; strlen=NULL;i_string i_string:operator + (char *ch) int k1=len,k2=strlen(ch),i; i_string STR(k1+k2); for(i=0;ik1;i+) STRi=stri; for(i=k1;ik2+k1;i+) STRi=chi-k1; return STR;i_string i_string:opera
16、tor + (i_string &ch) return *this+ch.str; void i_string:operator += (char ch) str=(char*)realloc(str,(2+len)*sizeof(char); strlen+=ch; strlen=NULL;i_string i_string:operator * (int c) i_string STR(*this); while(-c) STR+=*this; return STR;i_string i_string:operator (int c) if(c0) coutRuntime error0)
17、if(c%2) SUM=SUM.mul(A); A=A.mul(A); c/=2; return SUM;i_string i_string:operator + (char ch) char *c=new char2; c0=ch;c1=NULL; return *this+c;i_string i_string:operator(int n) if(n0) coutInput errorendl; exit(0) ; i_string STR(n+len); for(int i=0;i(int n) if(lenn) coutInsufficient memoryendl; exit(0)
18、 ; i_string STR(len-n); for(int i=0;ilen-n;i+) STR.stri=stri; return STR;bool i_string:operator Figure()&ch.Figure() i_string i_str1(*this),i_str2(ch); i_str1=i_str1.sub(i_str2); if(i_str10=-) return true; return false; if(strcmp(str,ch.str) (i_string &ch) if(this-Figure()&ch.Figure() i_string i_str
19、1(*this),i_str2(ch); i_str1=i_str2.sub(i_str1); if(i_str10=-) return true; return false; if(strcmp(str,ch.str)0) return true; return false;bool i_string:operator = (i_string &ch) if(this-Figure()&ch.Figure() i_string i_str1(*this),i_str2(ch); i_str1=i_str1.sub(i_str2); if(i_str10=0) return true; ret
20、urn false; if(strcmp(str,ch.str)=0) return true; return false;bool i_string:operator != (i_string &ch) if(this-Figure()&ch.Figure() i_string i_str1(*this),i_str2(ch); i_str1=i_str1.sub(i_str2); if(i_str10=0) return false; return true; if(strcmp(str,ch.str)!=0) return true; return false;bool i_string
21、:operator = (i_string &ch) if(this-Figure()&ch.Figure() i_string i_str1(*this),i_str2(ch); i_str1=i_str1.sub(i_str2); if(i_str10=0) return true; return false; if(strcmp(str,ch.str)=0) return true; return false;bool i_string:operator Figure()&ch.Figure() i_string i_str1(*this),i_str2(ch); i_str1=i_st
22、r1.sub(i_str2); if(i_str10=0) return true; return false; if(strcmp(str,ch.str)len) coutYou cant insert int the outside!pos;i-) stri=stri-1; strpos=c;len+; strlen=NULL;void i_string:insert(int pos,char *ch) if(poslen) coutYou cant insert outside!pos+k-1;i-) stri=stri-k; for(;i=pos;i-) stri=ch-k; strlen=NULL;void i_string:insert(int pos,i_string& ch) if(poslen) coutYou cant insert outside!insert(pos,ch.str);void i_string:swap(int p1,int p2) if(p11|p2len|p2len) coutSwap should inside!endl; exit(0); char tem=strp1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1