C++ String类重载运算符的实现

本篇文章仅供参考,还望各位指出不足,哈哈哈哈


//头文件

#ifndef string_H
#define string_H
#include <assert.h>
using namespace std;
class String
{
friend bool operator==(const String &String1,const String&String2);  //==运算符重载
friend bool operator<(const String&String1, const String&String2);  //<运算符重载函数
friend bool operator>(const String&String1, const String &String2); //>运算符重载函数
private:
char *str;  //定义字符串指针
int length;    //字符串内容长度
int CharLength; //字符串数组长度
public:
String();
~String()
{
delete[]str;
cout << "析构" << endl;
}
void Show();
void Strlen(); //计算字符串内容长度

};

#endif // !1




#include<iostream>
#include"String.h"
using namespace std;
#include <assert.h>


String::String()
{
int n;
cout << "请输入字符串的长度:" << endl;
cin >> n;
CharLength = n;
str = new char[CharLength+1];
cout << "请输入字符串内容:" << endl;
cin >> str;
Strlen();
}
bool operator==(const String &String1,const String &String2)
{
int m = 0,i=0;
if (String1.length != String2.length)return false;
while ((String1.str[i] == String2.str[i]) && (String1.str[i] != '\0'))i++;
if (i == String1.length)return true;
else return false;
}
bool operator<(const String&String1, const String&String2)
{
int i = 0;
if (String1.length < String2.length)return true;
while ((String1.str[i] != '\0') && (String2.str[i] != '\0')&&(String1.str[i]==String2.str[i]))
{
i++;
}
if ((String1.str[i] < String2.str[i]) && (String1.str[i] != '\0') && (String2.str[i] != '\0'))return true;
return false;
}
bool operator>(const String&String1, const String&String2)
{
int i = 0;
if (String1.length > String2.length)return true;
while ((String1.str[i] != '\0') && (String2.str[i] != '\0') && (String1.str[i] == String2.str[i]))
{
i++;
}
if ((String1.str[i] > String2.str[i]) && (String1.str[i] != '\0') && (String2.str[i] != '\0'))return true;
return false;
}
void String::Show()
{

cout <<"字符串的内容为:"<< str<< endl;
cout << "字符串内容的长度为:"<<length << endl;
cout << "字符串的长度为:"<<CharLength << endl;
}
void String::Strlen()
{
assert(str);
char *p;
p = str;
int count = 0;
while (*p++) { count++; }
length = count;
}



//测试代码


#include<iostream>
#include"string.h"
using namespace std;


int main()
{
cout << "第一个字符串:" << endl;
String String1;
cout << "第二个字符串" << endl;
String String2;
cout << "String1>String2 is" << endl;
if (String1 > String2)cout<<"true" << endl;
else cout << "false" << endl;
cout << "String1==String2 is" << endl;
if (String1 ==String2)cout << "true" << endl;
else cout << "false" << endl;
cout << "String1<String2 is" << endl;
if (String1 < String2)cout << "true" << endl;
else cout << "false" << endl;


cout << "第一个字符串" << endl;
String1.Show();
cout << "第二个字符串" << endl;
String2.Show();
system("pause");







return 0;
}



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值