String類的實現

2021-06-02 09:39:17 字數 3543 閱讀 8478

學習資料結構寫了乙個string的類,貼出來求指教

#ifndef ******string_h_h

#define ******string_h_h

#include #include #include #define defaultsize 128

class ******string

//maxsize為傳入引數的string

******string(const char * init);

******string(const ******string & a); //拷貝建構函式

~******string()

int getlength()

bool isempty() //空則返回1

void empty()

int search(******string& a) const;

int search(const char* p) const;

void makeupper();

void makelower();

void makereverse();

void trimall();

void trimleft();

void trimright();

void insert(int nindex,char c);

void delete(int n);

void deletefromto(int m,int n);

******string& operator = (char * p);

******string& operator = (******string& a);

******string operator + (const ******string& s) const;

******string operator + (const char * p) const;

******string& operator += (const ******string& ob);

******string& operator += (const char * p);

// friend void operator<(const ******string& a,const ******string& b);

friend ostream& operator<<(ostream& out,******string& ou);

friend istream& operator>>(istream& in,******string& i);

operator const char*()

char& operator(int i); //取第i個字元

int operator == (******string& a) const

//判斷串是否相等,不相等返回1,相等返回0;

friend bool operator<(const ******string& a,const ******string& b);

friend bool operator>(const ******string& a,const ******string& b);

};******string::******string()

******string::******string(const char * init)

******string::******string(const ******string & a)

ch[i]='\0';

curlength=i;

maxsize=a.maxsize;

}int ******string::search(******string& a) const }}

void ******string::makelower() }}

void ******string::makereverse()

if(nindex>=curlength&&curlength0&&curlength==maxsize-1)

ch[mm]='\0';

curlength=mm;

deletetemp;

return;

}******string& ******string::operator = (char * p)

******string& ******string::operator = (******string& a)else

return *this;

}******string ******string::operator + (const ******string& s) const

******string ******string::operator + (const char * p) const

******string& ******string::operator += (const ******string& ob)

maxsize=m+1;

curlength=n;

strcpy(ch,temp);

strcat(ch,ob.ch);

delete temp;

return *this;

}******string& ******string::operator += (const char * p)

maxsize=m+1;

curlength=n;

strcpy(ch,temp);

strcat(ch,p);

delete temp;

return *this;

}ostream& operator<<(ostream& out,******string& ou)

} return true;

}bool operator>(const ******string& a,const ******string& b)

} return true;

}#endif

主函式的實現

//#include "stdafx.h"

#include #include #include "******string.h"

int main(int argc, char* argv)

{ ******string a; //空建構函式

// a.insert(1,'a');

// a.delete(2);

// a.deletefromto(1,3);

******string b("bbbb"); //接收乙個字串指標(char *)的建構函式

******string c(b); //拷貝建構函式

******string d;

a="abcd"; //= 過載

d=a;

b=b+d; //+ 過載

b=b+"ebbb";

b+=c; //+= 過載

b+="dddd";

aa;******string e;

cin>>e; //流插入

cout<

string類的實現

參考c primer.string類的實現,清翔兔 06,jan.includeusing namespace std class string string void private char m data inline string string const char str inline st...

string類的實現

include using namespace std class string public string const char str 0 普通建構函式 string const string other 拷貝建構函式 string void 析構函式 string operator const...

string類的實現

string類有兩種實現方式 一 class string else string string const string s 拷貝構造引數 string operator const string s 賦值運算子過載 return this private char p 二.建構函式和析構函式都和...