本篇文章仅供参考,还望各位指出不足,哈哈哈哈
//头文件
#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;
}