字符串类 课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<<"析构函数被执行"<if(str!=NULL) delete []str;
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<<"成功"<str1.Copy("Hello");
str3=str1+str2;
str3.Display();
cout<cout<str3.Transtr(2,'A');
cout<return 0;
}

本文档由枫之影天所写,转载请注明!!!

相关文档
最新文档