當前位置:編程學習大全網 - 編程語言 - 編程我的

編程我的

//原VC6.0已測試。

# include & ltiostream.h & gt

# include & ltstring.h & gt

類MyString

{

公共:

MyString();//無參數構造函數

MyString(const MyString & amp;c);//復制構造函數

MyString(char * p);//參數化構造函數

void SetString(char * p);//設置字符串

int GetLength();//返回字符串長度

MyString Ltrim();//刪除左邊的空格

MyString Rtrim();//刪除右邊的空格

MyString StrLink(char * p);//連接字符串

我的字符串StrLink(我的字符串& ampc);//連接字符串

MyString Ucase();//將字符串中的所有小寫字母轉換為大寫字母。

MyString Lcase();//將字符串中的所有大寫字母轉換為小寫字母。

MyString DelChar(char ch);//刪除字符串中指定字符的所有匹配項。

char * ToString();//返回字符數組

MyString運算符=(char * p);

MyString運算符=(const MyString one);

MyString運算符+=(char * p);

MyString運算符+(char * p);

MyString運算符+(const MyString one);

friend MyString運算符+ (char *p,const MyString one);

~ MyString();//析構函數

私人:

char * str

int array _ len//字符數組長度

int str _ len//字符串的實際長度

};

MyString::MyString()

{

這-& gt;str = new char[1];

這-& gt;str _ len = 1;

這-& gt;數組_長度= 0;

}

MyString::MyString(char *p)

{

int I = 0;

while(*(p+i)!='\0')

{

i++;

}

這-& gt;str = new char[I+1];

這-& gt;array _ len = I+1;

這-& gt;str _ len = I;

for(int j = 0;j & lt數組_長度;j++)str[j]= *(p+j);

}

MyString::MyString(const MyString & amp;c)

{

這-& gt;數組_長度=c .數組_長度;

這-& gt;str _ len = c.str _ len

str = new char[this-& gt;array _ len];

for(int I = 0;我& lt這-& gt;數組_長度;i++)

這-& gt;str[I]= c . str[I];

}

void MyString::SetString(char *p)

{

如果(this-& gt;str)delete[]this-& gt;str

int I = 0;

while(*(p+i)!='\0')

{

i++;

}

這-& gt;str = new char[I+1];

這-& gt;array _ len = I+1;

這-& gt;str _ len = I;

for(int j = 0;j & lt數組_長度;j++)str[j]= *(p+j);

}

int MyString::GetLength()

{

返回這個-& gt;str _ len

}

MyString MyString::operator =(const MyString one)

{

SetString(one . str);

返回* this

}

MyString MyString::operator+(char * p)

{

MyString one = this-& gt;StrLink(p);

退壹個;

}

MyString MyString::operator+=(char * p)

{

* this = this-& gt;StrLink(p);

返回* this

}

MyString MyString::DelChar(char ch)

{

int count = 0;

char * tmp = new char[array _ len];

for(int i=0,j = 0;我& lt數組_長度;i++)

{

if(str[i]!= ch)tmp[j++]= str[I];

}

MyString * oneString = new MyString(tmp);

刪除[]tmp;

return * oneString

}

MyString運算符+(char *p,const MyString one)

{

char * tmp = new char[strlen(p)+one . array _ len];

int I = 0;

for(;我& lt(int)strlen(p);i++)

{

tmp[I]= p[I];

}

for(int j = 0;j & ltone.array _ lenj++)

{

tmp[i++]= one . str[j];

}

return *(新的MyString(tmp));

}

MyString MyString::operator+(const MyString one)

{

return * this+one . str;

}

MyString MyString::StrLink(MyString & amp;c)

{

return * this+c . ToString();

}

MyString MyString::StrLink(char * p)

{

char * tmp = new char[array _ len+strlen(p)];

int I = 0;

for(;我& ltarray _ len-1;i++)

{

tmp[I]= str[I];

}

for(int j = 0;j & lt=(int)(strlen(p));j++,i++)

{

tmp[I]= p[j];

}

return *(新的MyString(tmp));

}

MyString MyString::Lcase()

{

MyString * oneString = new MyString(* this);

for(int I = 0;我& lt數組_長度;i++)

{

if(str[i]>= 65 & amp& ampstr[I]& lt;=90)

one string-& gt;str[I]+= 32;

}

return * oneString

}

MyString MyString::Ucase()

{

MyString * oneString = new MyString(* this);

for(int I = 0;我& lt數組_長度;i++)

{

if(str[i]>= 97 & amp& ampstr[I]& lt;=122)

one string-& gt;str[I]-= 32;

}

return * oneString

}

MyString MyString::Ltrim()

{

MyString * oneString = new MyString(* this);

char * tmp = new char[array _ len];

bool go = false

for(int i=0,j = 0;我& lt數組_長度;i++)

{

如果(!去吧)

if(str[i]!= 32)go = true;

否則繼續;

tmp[j++]= str[I];

}

one string-& gt;SetString(tmp);

刪除[]tmp;

return * oneString

}

MyString MyString::Rtrim()

{

char * tmp = new char[array _ len];

for(int I = 0;我& lt數組_長度;i++)

{

tmp[I]= str[I];

}

for(int j = array _ len-2;j & gt0;j -)

{

if(tmp[j]= = ' ')tmp[j]= ' \ 0 ';

else break

}

MyString one(tmp);

刪除[]tmp;

退壹個;

}

MyString::~MyString()

{

如果(this-& gt;str)delete[]this-& gt;str

}

char* MyString::ToString()

{

返回這個-& gt;str

}

int main(int argc,char* argv[])

{

MyString str 1(" wangaocao ");//初始化str1

str1=str1。DelChar(' o ');//Delete ' o ' str 1 . str = " wanga cha "

MyString str2

str2。SetString(“和鄧小琴”);

str1=str1。StrLink(str 2);//對象連接STR1。STR = "萬嘎查和鄧小琴"

//也可以用str 1 = str 1+str 2;或者str 1+= str;可以達到同相的效果。

MyString str3=str1。StrLink("都是老師。");

//str3.str="wangacha和鄧小琴是老師。"

//mystring str 3 = str 1+"都是老師。”可以達到和上面壹樣的效果。

cout & lt& ltstr1。ToString()& lt;& ltendl//顯示王加查和鄧是的老師。

MyString one= "妳說:"+str 1;//one.str= "妳說:萬嘎查和鄧小琴是老師"

cout & lt& lt壹個。ToString()& lt;& ltendl

壹=壹。ucase();//轉換成大寫

cout & lt& lt壹個。ToString()& lt;& ltendl

cout & lt& lt壹個。Lcase()。ToString()& lt;& ltendl//再次轉換為小寫,但不改變小寫本身。

one = " "+one+" ";//添加左右空格

cout & lt& lt壹個。ToString()& lt;& lt“對”& lt& ltendl//看效果

壹=壹。ltrim();//刪除左右空格

壹=壹。rtrim();

cout & lt& lt壹個。ToString()& lt;& lt“對”& lt& ltendl//看效果

cout & lt& lt壹個。GetLength()& lt;& ltendl//輸出字符數

返回0;

}

  • 上一篇:白箱是什麽?
  • 下一篇:java高手請進:求壹編程
  • copyright 2024編程學習大全網