字符串的重载
来源:互联网 发布:python iteritems 3.0 编辑:程序博客网 时间:2024/06/05 23:39
#include <iostream>
using namespace std;
#include <cstring>
#include <windows.h>
class String
{
public:
String(){p=NULL;}
String(const String &);
String(char *str);
~String();
String & operator=(const String &);
String operator+(const String&);
friend bool operator>(String&string1,String&string2);
friend bool operator<(String&string1,String&string2);
friend bool operator==(String&string1,String&string2);
friend bool operator!=(String&string1,String&string2);
friend ostream&operator<<(ostream&,const String&);
friend istream&operator>>(istream&,String&);
void display();
private:
char *p;
};
String::String(const String &s)
{
if(s.p)
p=new char[strlen(s.p)+1];
else p=0;
strcpy(p,s.p);
}
String::String(char *str)
{
p=str;
}
String::~String()
{
if(p!=NULL)
delete p;
p=NULL;
}
String&String::operator=(const String&s)
{
if(p)
{delete[]p;p=new char[strlen(s.p)+1];}
else
p=new char[strlen(s.p)+1];
strcpy(p,s.p);
return *this;
}
String String::operator+(const String&s)
{
String temp;
if(temp.p!=NULL)
delete[]temp.p;
temp.p=new char[strlen(p)+strlen(s.p)+1];
strcpy(temp.p,p);
strcat(temp.p,s.p);
return temp;
}
bool operator>(String&string1,String&string2)
{
if(strcmp(string1.p,string2.p)>0)
return true;
else
return false;
}
bool operator<(String&string1,String&string2)
{
if(!operator>(string1,string2))
return true;
else
return false;
}
bool operator==(String&string1,String&string2)
{
if(strcmp(string1.p,string2.p)==0)
return true;
else
return false;
}
bool operator!=(String&string1,String&string2)
{
if(!(string1.p==string2.p))
return true;
else
return false;
}
ostream&operator<<(ostream&output,const String&s)
{
output<<s.p;
return output;
}
istream&operator>>(istream&intput,String&s)
{//cout<<"input?a?string:";
char temp[100000]={"",};
intput>>temp;
s.p=temp;
return intput;
}
void String::display()
{
cout<<p<<endl;
}
void compare(String&string1,String&string2)
{if(operator>(string1,string2)==1)
{cout<<"string1>string2"<<endl;}
else
if(operator<(string1,string2)==1)
{
cout<<"string1<string2"<<endl;
}
if(operator==(string1,string2)==1)
{
cout<<"string1=string2<<endl";
}
if(operator==(string1,string2)!=1)
{
cout<<"string1!=string2"<<endl;
}
}
int main()
{
String string1("Hello"),string2("World");
cout<<"输出string1:";
string1.display();
cout<<"输出string2:";
string2.display();
cout<<"比较string1和string2:";
compare(string1,string2);
String string4,string5,string6;
cout<<"string1和string2连接后赋值给string4:"<<endl;
string4=string1+string2;
string4.display();
cout<<"输入string5:";
cin>>string5;
cout<<"输出string5:"<<endl;
cout<<string5<<endl;
cout<<"string1赋值给string6:"<<endl;
string6=string1;
string6.display();
system("pause");
return 0;
using namespace std;
#include <cstring>
#include <windows.h>
class String
{
public:
String(){p=NULL;}
String(const String &);
String(char *str);
~String();
String & operator=(const String &);
String operator+(const String&);
friend bool operator>(String&string1,String&string2);
friend bool operator<(String&string1,String&string2);
friend bool operator==(String&string1,String&string2);
friend bool operator!=(String&string1,String&string2);
friend ostream&operator<<(ostream&,const String&);
friend istream&operator>>(istream&,String&);
void display();
private:
char *p;
};
String::String(const String &s)
{
if(s.p)
p=new char[strlen(s.p)+1];
else p=0;
strcpy(p,s.p);
}
String::String(char *str)
{
p=str;
}
String::~String()
{
if(p!=NULL)
delete p;
p=NULL;
}
String&String::operator=(const String&s)
{
if(p)
{delete[]p;p=new char[strlen(s.p)+1];}
else
p=new char[strlen(s.p)+1];
strcpy(p,s.p);
return *this;
}
String String::operator+(const String&s)
{
String temp;
if(temp.p!=NULL)
delete[]temp.p;
temp.p=new char[strlen(p)+strlen(s.p)+1];
strcpy(temp.p,p);
strcat(temp.p,s.p);
return temp;
}
bool operator>(String&string1,String&string2)
{
if(strcmp(string1.p,string2.p)>0)
return true;
else
return false;
}
bool operator<(String&string1,String&string2)
{
if(!operator>(string1,string2))
return true;
else
return false;
}
bool operator==(String&string1,String&string2)
{
if(strcmp(string1.p,string2.p)==0)
return true;
else
return false;
}
bool operator!=(String&string1,String&string2)
{
if(!(string1.p==string2.p))
return true;
else
return false;
}
ostream&operator<<(ostream&output,const String&s)
{
output<<s.p;
return output;
}
istream&operator>>(istream&intput,String&s)
{//cout<<"input?a?string:";
char temp[100000]={"",};
intput>>temp;
s.p=temp;
return intput;
}
void String::display()
{
cout<<p<<endl;
}
void compare(String&string1,String&string2)
{if(operator>(string1,string2)==1)
{cout<<"string1>string2"<<endl;}
else
if(operator<(string1,string2)==1)
{
cout<<"string1<string2"<<endl;
}
if(operator==(string1,string2)==1)
{
cout<<"string1=string2<<endl";
}
if(operator==(string1,string2)!=1)
{
cout<<"string1!=string2"<<endl;
}
}
int main()
{
String string1("Hello"),string2("World");
cout<<"输出string1:";
string1.display();
cout<<"输出string2:";
string2.display();
cout<<"比较string1和string2:";
compare(string1,string2);
String string4,string5,string6;
cout<<"string1和string2连接后赋值给string4:"<<endl;
string4=string1+string2;
string4.display();
cout<<"输入string5:";
cin>>string5;
cout<<"输出string5:"<<endl;
cout<<string5<<endl;
cout<<"string1赋值给string6:"<<endl;
string6=string1;
string6.display();
system("pause");
return 0;
}
0 0
- 不能重载的字符串
- C++字符串的重载
- 字符串的重载
- 字符串的运算符重载
- 字符串的运算符重载
- C# 字符串,数字的排序重载
- 运算符的重载-封装自己的字符串模块
- 字符串优化,与字符串的不可变,字符串对象重载的参数
- 重载“+”符号连接字符串
- [c++]String字符串类的运算符重载
- 字符串类中运算符重载出现的一个问题
- c++模板重载之字符串模板库的简单实现
- c++的操作符重载(输出流与字符串)
- 操作符重载案例之字符串重载
- <<的重载
- []的重载
- 运算符重载和字符串
- 字符串 赋值运算符 重载
- 苹果系统 Mac OS X Yosemite 正式版安装程序镜像下载 (10.10 新功能特性总结)
- android自助点单APP(1)Fastjson解析
- linux 命令系列之 变量测试与内容替换(51)
- 虚幻4把小图片组装成大图
- 12558 - Egyptian Fractions (HARD version)
- 字符串的重载
- Linux环境下Apache配置多个虚拟主机挂载多站点同时运行
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- http 错误代码表
- linux下修改oracle数据库的字符集
- RelativeLayout相对布局
- 简单制作 OS X Yosemite 10.10 正式版U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
- 颜色模型的转换公式
- jQuery EasyUI_Combo与Datagrid.1