/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:扩充string类
*作者:孙玲倩
*完成日期:2014年 04月22号
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: 无
*问题描述:扩充string 类
*程序输出:无
*问题分析:
*算法设计:
*/
#include <iostream>
#include <Cstring>
using namespace std;
class String
{
public:
String( ); //默认构造函数
String(const char *s);
String(String &str); //构造函数
~String();
void display( );
friend String operator + (String &s1,String &s2 );
friend String operator - (String &s1,String &s2 );
private:
char *p;
int len; //字符型指针,用于指向字符串
};
String::String()
{
p=NULL;
}
String::String(const char*s)
{
len=strlen(s)+1;
p=new char[len];
strcpy(p,s);
}
String::String(String &str)
{
len=str.len;
if(p!=NULL) delete []p;
p=new char[len+1];
strcpy(p,str.p);
}
String::~String()
{
if(!p) delete []p;
}
void String::display()
{
cout<<p<<endl;
}
String operator+(String &s1,String &s2 )
{
String s3;
s3.len=s1.len+s2.len;
s3.p=new char[s3.len];
strcpy(s3.p,s1.p);
strcat(s3.p,s2.p);
return s3;
}
String operator-(String &s1,String &s2 )
{
int i,n;
String s3;
s3.len=s1.len+s2.len;
s3.p=new char[s3.len];
for(i=0; i<s1.len-3; i++)
{
s3.p[i]=s1.p[i];
}
for(n=1; i<s3.len; n++,i++)
{
s3.p[i]=s2.p[n];
}
return s3;
}
int main()
{
String string1(" Hello "), string2(" World ");
string1.display();
string2.display();
String string3;
string3 = string1 + string2;
string3.display();
string3 = string1 - string2;
string3.display();
return 0;
}
第8周项目四扩充string 类
最新推荐文章于 2015-12-05 19:30:58 发布