求C++课程设计-字符串操作 源代码 要求实现字符串类的各种操作 15
要求实现以下操作:字符串类对象的输入输出;字符串的长度;字符串的连接;字符串的考贝;字符串的减法;子串在主串中的定位;子串替换功能;...
要求实现以下操作:字符串类对象的输入输出 ;字符串的长度 ;字符串的连接 ;字符串的考贝 ;字符串的减法 ;子串在主串中的定位 ;子串替换功能 ;
展开
1个回答
展开全部
#include "stdafx.h"
#define NULL 0
#include <string.h>
#include <iostream.h>
class CYString
{
public:
CYString()
{
p_Data=new char[1];
p_Data[0]='0';
}
CYString(const/*指针指向的内容不可变*/ char* const/*指针不可变*/ pStr)
{
if(pStr==NULL)
{
p_Data=new char[1];
p_Data[0]='\0';
}
else
{
p_Data=new char[strlen(pStr)+1];
if(p_Data==NULL)
{
p_Data=new char[1];
p_Data[0]='\0';
}
if(strcpy(p_Data,pStr)==NULL)
{
p_Data=new char[1];
p_Data[0]='\0';
}
}
}
CYString(const CYString&m_Str)
{
if(&m_Str==this)//判断是否是自身
return;
p_Data=new char[strlen(m_Str.p_Data)+1];//本调用本类中的私有成员.
strcpy(p_Data,m_Str.p_Data);
}
~CYString(){};
CYString&operator =(const CYString&m_Str);
CYString operator +(const CYString&m_Str);
friend ostream& operator <<(ostream &os,const CYString &m_Str);
private:
char *p_Data;
};
CYString&CYString::operator =(const CYString&m_Str)
{
if(p_Data!=NULL)
delete []p_Data;
p_Data=new char[strlen(m_Str.p_Data)+1];//本调用本类中的私有成员.
strcpy(p_Data,m_Str.p_Data);
return *this;
}
CYString CYString::operator +(const CYString&m_Str)
{
CYString m_Tem;
int m_Size=strlen(m_Str.p_Data)+strlen(p_Data)+1;
if(m_Tem.p_Data!=NULL)
{
delete []m_Tem.p_Data;
m_Tem.p_Data=NULL;
}
m_Tem.p_Data=new char[m_Size];
m_Tem.p_Data=strcat(p_Data,m_Str.p_Data);
return m_Tem;
}
ostream & operator<<(ostream &os,const CYString &m_Str)
{
return os<<m_Str.p_Data<<endl;
}
int main(int argc, char* argv[])
{
CYString str("XXX");
CYString str1("YYY");
str+str1;
cout<<str;
return 0;
}
#define NULL 0
#include <string.h>
#include <iostream.h>
class CYString
{
public:
CYString()
{
p_Data=new char[1];
p_Data[0]='0';
}
CYString(const/*指针指向的内容不可变*/ char* const/*指针不可变*/ pStr)
{
if(pStr==NULL)
{
p_Data=new char[1];
p_Data[0]='\0';
}
else
{
p_Data=new char[strlen(pStr)+1];
if(p_Data==NULL)
{
p_Data=new char[1];
p_Data[0]='\0';
}
if(strcpy(p_Data,pStr)==NULL)
{
p_Data=new char[1];
p_Data[0]='\0';
}
}
}
CYString(const CYString&m_Str)
{
if(&m_Str==this)//判断是否是自身
return;
p_Data=new char[strlen(m_Str.p_Data)+1];//本调用本类中的私有成员.
strcpy(p_Data,m_Str.p_Data);
}
~CYString(){};
CYString&operator =(const CYString&m_Str);
CYString operator +(const CYString&m_Str);
friend ostream& operator <<(ostream &os,const CYString &m_Str);
private:
char *p_Data;
};
CYString&CYString::operator =(const CYString&m_Str)
{
if(p_Data!=NULL)
delete []p_Data;
p_Data=new char[strlen(m_Str.p_Data)+1];//本调用本类中的私有成员.
strcpy(p_Data,m_Str.p_Data);
return *this;
}
CYString CYString::operator +(const CYString&m_Str)
{
CYString m_Tem;
int m_Size=strlen(m_Str.p_Data)+strlen(p_Data)+1;
if(m_Tem.p_Data!=NULL)
{
delete []m_Tem.p_Data;
m_Tem.p_Data=NULL;
}
m_Tem.p_Data=new char[m_Size];
m_Tem.p_Data=strcat(p_Data,m_Str.p_Data);
return m_Tem;
}
ostream & operator<<(ostream &os,const CYString &m_Str)
{
return os<<m_Str.p_Data<<endl;
}
int main(int argc, char* argv[])
{
CYString str("XXX");
CYString str1("YYY");
str+str1;
cout<<str;
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询