用c++编写一个完整程序:定义一个字符串类String,用来存放不定长的字符串,重载运算符“==”,“<”和“>”,用于两个字符串的等于、小于和大于的比较运算。
时间: 2024-02-09 22:11:53 浏览: 76
好的,下面是一个简单的实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
class String {
public:
String(const char* str = "") {
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
String(const String& other) {
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
~String() {
delete[] m_data;
}
String& operator=(const String& other) {
if (this != &other) {
delete[] m_data;
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
return *this;
}
bool operator==(const String& other) const {
return strcmp(m_data, other.m_data) == 0;
}
bool operator<(const String& other) const {
return strcmp(m_data, other.m_data) < 0;
}
bool operator>(const String& other) const {
return strcmp(m_data, other.m_data) > 0;
}
friend ostream& operator<<(ostream& os, const String& str) {
os << str.m_data;
return os;
}
private:
char* m_data;
};
int main() {
String str1("hello"), str2("world");
cout << (str1 == str2) << endl; // 输出 0
cout << (str1 < str2) << endl; // 输出 1
cout << (str1 > str2) << endl; // 输出 0
return 0;
}
```
这里我们重载了运算符“==”、“<”和“>”,用于比较两个字符串的大小关系。其中,“==”运算符使用了C++标准库中的strcmp函数进行字符串比较。为了方便输出,我们还重载了“<<”运算符。
阅读全文