主题:[原创]高手进来!!特别是重载高手进来!!我的+重栽有点问题?
#include<string.h> //包含头文件
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#define NULL 0
const int max=100;
class zdystring //定义字符串类
{
private:
char *str; //字符串的私有成员
int size; //字符串长度
public:
zdystring(); //无实参的构造函数
zdystring(char *zdystring);//有字符串指针的构造函数
void set(char *zdystring);//设置字符串
void operator =(zdystring &obj);//等号重载
zdystring operator +(zdystring &obj);//加号重载
void substring(zdystring &obj,int count,int length); //求子串
char *getstr(){return str;}//取串植
int getsize(){return size;}//取串长
void display();//输出函数
~zdystring();//析构函数
};
zdystring::zdystring()
{
size=1;
str=new char[size];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
str=NULL;
}
zdystring::zdystring(char *zdystring)
{
size=strlen(zdystring)+1;
str=new char[size];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
strcpy(str,zdystring);
}
void zdystring::set(char *zdystring)
{
size=strlen(zdystring)+1;
str=new char[size];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
strcpy(str,zdystring);
size=strlen(str);
}
void zdystring:: substring(zdystring &obj,int count,int length)
{
int i;
str=new char[length];
for(i=0;i<length;i++,count++)
str[i]=obj.str[count-1];
size=length;
}
void zdystring::operator =(zdystring &obj)
{
if(!strcmp(str,obj.str))
;
else
{
delete str;
size=strlen(obj.str);
str=new char[size+1];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
else
{
strcpy(str,obj.str);
}
}
}
zdystring zdystring::operator +(zdystring &obj)
{
zdystring temp;
int len;
delete temp.str;
len=strlen(obj.str)+strlen(str);
temp.size=len;
temp.str=new char[len+1];
if(temp.str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
strcpy(temp.str,str);
strcat(temp.str,obj.str);
temp.display();
return temp;
}
zdystring::~zdystring()
{
delete[]str;
size=0;
}
void zdystring::display()
{
cout<<"字符串为"<<this->str<<' ';
cout<<"字符串长度为"<<this->size<<endl;
cout<<endl;
}
void printmeau(void)
{
int i;
char *a[13]=
{
"◆◆◆◆◆◆欢迎使用串编译器◆◆◆",
"●1 →字符串初始化",
"●2 →串拷贝 ",
"●3 →求子串 ",
"●4 →连接字符串 ",
"●5 →求串长度 ",
"●6 →插入串 ",
"●7 →删除串 ",
"●8 →串长度比较 ",
"●9 →显示所有的字符串 ",
"●0 →清屏 ",
"●q →退出系统 ",
"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆",
};
for(i=0;i<13;i++)
{
cout<<a[i]<<endl;
}
}
int strsize(zdystring obj1,zdystring obj2)
{
if(obj1.getsize()==obj2.getsize())
return 0;
else if(obj1.getsize()>obj2.getsize())
return 1;
else
return -1;
}
void face(int n){
char * string[]={"",
"\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓",
"\t┃ ┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓ ┃",
"\t┃ ┠C+┨┠课┨┠设┨┠设┨┠计┨ ┃ ",
"\t┃ ┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛ ┃ ",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ 字符串功能实现 ┃",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ 用户使用手册(Using Book) ┃",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ 在其他功能演示之前,请先初始化 ┃",
"\t┃请你按照菜单的每次要求,输入所要求的数据,否则容易出错 ┃",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ ¤ ╭⌒╮ ╭⌒╮ ┃",
"\t┃ ╱◥██◣╭╭ ⌒╮ ┃",
"\t┃ ︱田︱田田|╰---------------------------------- ┃",
"\t┃ ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ┃",
"\t┃ ┃",
"\t┃ 程序设计:T523-5-18陈琪 指导老师:王晓东老师 ┃ ",
"\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"};
if(n>=0)
{
for(int i=20;i>0;i--)
{
system("cls");
for(int j=i;j<20;j++)
cout<<string[j]<<endl;
Sleep(n);
}
}
else
{
system("cls");
for(int i=0;i<20;i++)
{
cout<<string[i]<<endl;
}
}
}
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#define NULL 0
const int max=100;
class zdystring //定义字符串类
{
private:
char *str; //字符串的私有成员
int size; //字符串长度
public:
zdystring(); //无实参的构造函数
zdystring(char *zdystring);//有字符串指针的构造函数
void set(char *zdystring);//设置字符串
void operator =(zdystring &obj);//等号重载
zdystring operator +(zdystring &obj);//加号重载
void substring(zdystring &obj,int count,int length); //求子串
char *getstr(){return str;}//取串植
int getsize(){return size;}//取串长
void display();//输出函数
~zdystring();//析构函数
};
zdystring::zdystring()
{
size=1;
str=new char[size];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
str=NULL;
}
zdystring::zdystring(char *zdystring)
{
size=strlen(zdystring)+1;
str=new char[size];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
strcpy(str,zdystring);
}
void zdystring::set(char *zdystring)
{
size=strlen(zdystring)+1;
str=new char[size];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
strcpy(str,zdystring);
size=strlen(str);
}
void zdystring:: substring(zdystring &obj,int count,int length)
{
int i;
str=new char[length];
for(i=0;i<length;i++,count++)
str[i]=obj.str[count-1];
size=length;
}
void zdystring::operator =(zdystring &obj)
{
if(!strcmp(str,obj.str))
;
else
{
delete str;
size=strlen(obj.str);
str=new char[size+1];
if(str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
else
{
strcpy(str,obj.str);
}
}
}
zdystring zdystring::operator +(zdystring &obj)
{
zdystring temp;
int len;
delete temp.str;
len=strlen(obj.str)+strlen(str);
temp.size=len;
temp.str=new char[len+1];
if(temp.str==NULL)
{
cout<<"分配错误."<<endl;
exit(1);
}
strcpy(temp.str,str);
strcat(temp.str,obj.str);
temp.display();
return temp;
}
zdystring::~zdystring()
{
delete[]str;
size=0;
}
void zdystring::display()
{
cout<<"字符串为"<<this->str<<' ';
cout<<"字符串长度为"<<this->size<<endl;
cout<<endl;
}
void printmeau(void)
{
int i;
char *a[13]=
{
"◆◆◆◆◆◆欢迎使用串编译器◆◆◆",
"●1 →字符串初始化",
"●2 →串拷贝 ",
"●3 →求子串 ",
"●4 →连接字符串 ",
"●5 →求串长度 ",
"●6 →插入串 ",
"●7 →删除串 ",
"●8 →串长度比较 ",
"●9 →显示所有的字符串 ",
"●0 →清屏 ",
"●q →退出系统 ",
"◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆",
};
for(i=0;i<13;i++)
{
cout<<a[i]<<endl;
}
}
int strsize(zdystring obj1,zdystring obj2)
{
if(obj1.getsize()==obj2.getsize())
return 0;
else if(obj1.getsize()>obj2.getsize())
return 1;
else
return -1;
}
void face(int n){
char * string[]={"",
"\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓",
"\t┃ ┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓ ┃",
"\t┃ ┠C+┨┠课┨┠设┨┠设┨┠计┨ ┃ ",
"\t┃ ┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛ ┃ ",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ 字符串功能实现 ┃",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ 用户使用手册(Using Book) ┃",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ 在其他功能演示之前,请先初始化 ┃",
"\t┃请你按照菜单的每次要求,输入所要求的数据,否则容易出错 ┃",
"\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫",
"\t┃ ¤ ╭⌒╮ ╭⌒╮ ┃",
"\t┃ ╱◥██◣╭╭ ⌒╮ ┃",
"\t┃ ︱田︱田田|╰---------------------------------- ┃",
"\t┃ ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ┃",
"\t┃ ┃",
"\t┃ 程序设计:T523-5-18陈琪 指导老师:王晓东老师 ┃ ",
"\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"};
if(n>=0)
{
for(int i=20;i>0;i--)
{
system("cls");
for(int j=i;j<20;j++)
cout<<string[j]<<endl;
Sleep(n);
}
}
else
{
system("cls");
for(int i=0;i<20;i++)
{
cout<<string[i]<<endl;
}
}
}