字符串类 课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
///////////////////////////////////////
封装一个,完善字符串,字符串的基本操作
要求如下:
? 定义一个串类CMyString,建立适当的构造函数
? 字符串使用指针保存字符串
? 必须实现如下操作,字符串比较、求串的长度、判断串是否为空、将串置空、
字符串赋值(包括两个字符串类复制,一个字符串赋值到CmyString对象)、
求字符串中的一个字符或改变字符串中的一个字符(采用重载[]),
完成串的赋值与合并(重载+),得到表示字符串的指针地址
//////////////////////////////////////
#include
#include
////////////////CMyString.h////////////
class CMyString
{
private:
char *str;
public:
CMyString();
CMyString(char *substr); //构造函数
CMyString(const CMyString & p);//拷贝构造函数
int Comstr(CMyString &substr);//比较两个函数
int Length(); //求字符串的长度
char* IsEmpty(); //判断字符串是否空
void MakeEmpty(); //将字符串置空
void Copy(CMyString &substr); //将一个字符串类赋值给另一个对象
void Copy(char *substr); //将一个字符串赋值给一个对象
char & operator[](int i); //将对象中的某个字符替换为ch
friend CMyString operator+(const CMyString &str,const CMyString &substr); //实现两个字符串的合并与赋值
void Display();
CMyString &operator=(const CMyString & p);//重载[],实现字符串的赋值
void Transtr(int i,char ch);//将第i个字符换为ch
~CMyString();
};
//////////////MyString.cpp///////////////////
CMyString::CMyString(){ str=NULL; }
CMyString::CMyString(char *substr)
{
str=new char[strlen(substr)+1];
strcpy(str,substr);
//cout<<"含一个参数的构造函数被执行"<
CMyString::CMyString(const CMyString & p)
{
str=new char[strlen(p.str)+1];
strcpy(str,p.str);
// cout<<"拷贝构造函数被执行"<
CMyString::~CMyString()
{
cout<<"析构函数被执行"<
str=NULL;
}
int CMyString::Comstr(CMyString &substr)//比较两个字符串
{
return strcmp(str,substr.str);
/////////////////////////////
/*
int i=0;
while(str!=EOF&&substr.str!=EOF)
{
if(*(str+i)>*(substr.str+i) return 1;
if(*(str+i)<*(substr.str+i) return -1;
}
return 0;
*/
////////////////////////////
}
int CMyString::Length() //求字符串的长度
{
return strlen(str);
/////////////////////////////
/*
int count=0;
while(*(str+count)!=EOF)
{ count++;}
return count;
*/
////////////////////////////
}
char* CMyString:: IsEmpty() //判断字符串是否为空
{
if(str!=NULL) {return "非空";}
else return "空";
}
void CMyString::MakeEmpty() //将一个字符串置空
{
if(str!=NULL) delete[]str
;
str=NULL;
// cout<<"置空成功"<
void CMyString::Copy(CMyString &substr)
{ str=new char[strlen(substr.str)+1];
strcpy(str,substr.str);
/////////////////////////////////
/*
if(str!=NULL) delete[]str;
str=NULL;
p=new char[strlen(substr.str)+1];
int i=0;
while(*(substr+i)!=EOF)
{
*(str+i)=*(substr.str+i);
}
*/
////////////////////////////////
}
void CMyString::Copy(char *substr)
{ str=new char[strlen(substr)+1];
strcpy(str,substr);
}
void CMyString::Display()
{
cout<
CMyString operator+(const CMyString & str,
const CMyString & substr)
{
char *p;
p=new char[strlen(str.str)+strlen(substr.str)+1];
strcpy(p,str.str);
strcat(p,substr.str);
CMyString result(p);
return result;
}
CMyString &CMyString::operator =(const CMyString &p)
{
if(str!=NULL) delete []str;
str=new char[strlen(p.str)+1];
strcpy(str,p.str);
return *this;
}
char & CMyString::operator[](int i)
{
return *(str+i-1);
}
void CMyString::Transtr(int i,char ch)
{
*(str+i-1)=ch;
}
////////////main.cpp//////////////////////
#include
#include
#include"CMyString.h"
int main()
{
CMyString str1("You"),str2("We"),str3;
if(str(str2)) cout<<"成功"<
str3=str1+str2;
str3.Display();
cout<
cout<
}
本文档由枫之影天所写,转载请注明!!!