分享
 
 
 

Teens' TString

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

#include <stdlib.h>

#include <string.h>

//我用了3天的时间来构想和编写这个类,大家使用一下,看看有什么

要改进的地方!并多多指点.

//最初编写这个类只是为了方便我编写字符串的程序,后来觉得发上

来给大家一起探讨可能会对我的

//学习有比较的的帮助 我也想结交编程方面的好友,我的

QQ:17160764

class TString

{

public:

TString():len(0),size(0),sp(0),error(0),pNeedFree(0){}

TString(const char *Newchar);

~TString();

public:

void BigWrite(); //全变成大写

void LittleWrite(); //全变成小写

const char *GetString()const{return sp;}//得到字符串的指针

const int GetLen()const{return len;} //得到字符串的长度

public:

//下面的用于字符串赋值

TString & operator +=(const TString &copy);

TString & operator +=(const char * Newchar);

TString & operator =(const TString &copy);

TString & operator =(const char * Newchar);

//下面的都是用于字符串比较

int operator ==(const char* cmp);

int operator ==(const TString &cmp);

int operator !=(const char* cmp);

int operator !=(const TString &cmp);

int operator <(const char* cmp);

int operator <(const TString &cmp);

int operator >(const char* cmp);

int operator >(const TString &cmp);

int operator <=(const char* cmp);

int operator <=(const TString &cmp);

int operator >=(const char* cmp);

int operator >=(const TString &cmp);

//下面的用于连接字符串

char* operator +(const char * cs);

char* operator +(const TString & s1);

char operator [](const int i);//这个用于提取某个字符

public:

int StrToInt(const char* interger);

TString & ChangeLen(int NewLen);

protected:

int compare(const char* Cmpchar);

int compare(const TString &Cmpchar)const;

char * sp; //存储字符串的

int len;

int size;

int error;

char * pNeedFree;//用于释放动态字符串

};

/////////////////////////////////////////////////////

TString::TString(const char *Newchar)

{

pNeedFree=0;

if(Newchar==NULL)

{

len=0;

size=0;

sp=NULL;

error=0;

}

else

{

len=strlen(Newchar);

size=len+1;

sp=new char[size];

if(sp!=NULL)

strcpy(sp,Newchar);

else

error=(1);//out_of_memory);

}

}

TString & TString::operator =(const TString &copy)

{

if(this!=&copy) //不能自赋值给自己

{

delete sp;

if(copy.sp==NULL)

{

len=0;

size=0;

sp=0;

error=0;

}

else

{

len=copy.len;

size=len+1;

sp=new char[size];

if(sp!=NULL)

strcpy(sp,copy.sp);

else

error=1;

}

}

delete [] pNeedFree;

return *this;

}

TString & TString::operator =(const char * Newchar)

{

if(Newchar==NULL)

{

len=0;

size=0;

sp=NULL;

error=0;

}

else

{

len=strlen(Newchar);

size=len+1;

sp=new char[size];

if(sp!=NULL)

strcpy(sp,Newchar);

else

error=1;

}

delete [] pNeedFree;

return *this;

}

TString::~TString()

{

delete sp;

sp=0;

}

char* TString::operator +(const char *cs)

{

char *Newchar=new char[this->len+strlen(cs)+1];

if(Newchar!=NULL)strcpy(Newchar,this->sp);

if(cs !=NULL)strcat(Newchar,cs);

pNeedFree=Newchar;

return Newchar;

}

char* TString:: operator +(const TString & s1)

{

char * Newchar=new char[s1.len+this->len+1];

if(Newchar!=NULL)strcpy(Newchar,this->sp);

if(s1.sp !=NULL)strcat(Newchar,s1.sp);

pNeedFree=Newchar;

return Newchar;

}

int TString::StrToInt(const char* interger)

{

int i=0;

i=atoi(interger);

return i;

}

TString &TString:: operator +=(const char * Newchar)

{

*this=ChangeLen(len+strlen(Newchar));

strcat(sp,Newchar);

return *this;

}

TString &TString:: operator +=(const TString &s1)

{

*this=ChangeLen(len+s1.len);

strcat(sp,s1.sp);

return *this;

}

TString &TString:: ChangeLen(int NewLen)

{

char *temp=new char[size];

strcpy(temp,sp);

len=NewLen;

size=len+1;

if(sp!=NULL)delete sp;

sp=new char[size];

strcpy(sp,temp);

delete temp;

return *this;

}

char TString:: operator [](const int i)

{

if(i<0)

{

error=2;

return sp[0];

}

if(i>len)

{

error=2;

return sp[len];

}

else

return sp[i];

}

void TString::BigWrite()

{

strupr(sp);

}

void TString::LittleWrite()

{

strlwr(sp);

}

//////////////////////////////////////////////////

int TString::compare(const char* Cmpchar)

{

return strcmp(sp,Cmpchar);

}

int TString::compare(const TString &Cmpchar)const

{

return strcmp(sp,Cmpchar.sp);

}

int TString::operator ==(const char* cmp)

{

return compare(cmp)==0;

}

int TString::operator ==(const TString& cmp)

{

return compare(cmp)==0;

}

int TString::operator !=(const char* cmp)

{

return compare(cmp)!=0;

}

int TString::operator !=(const TString &cmp)

{

return compare(cmp)!=0;

}

int TString::operator <(const char* cmp)

{

return compare(cmp)<0;

}

int TString::operator <(const TString &cmp)

{

return compare(cmp)<0;

}

int TString::operator >(const char* cmp)

{

return compare(cmp)>0;

}

int TString::operator >(const TString &cmp)

{

return compare(cmp)>0;

}

int TString::operator <=(const char* cmp)

{

return compare(cmp)<=0;

}

int TString::operator <=(const TString &cmp)

{

return compare(cmp)<=0;

}

int TString::operator >=(const char* cmp)

{

return compare(cmp)>=0;

}

int TString::operator >=(const TString &cmp)

{

return compare(cmp)>=0;

}

//这个类还差一个错误处理,有时间我会添加上去

饿

[size=3][/size][font=宋体][/font]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有