// // Created by lenfrex on 2022/4/4. // #ifndef WORK20220401_STRING_H #define WORK20220401_STRING_H #include #include #include "utility" using namespace std::rel_ops; class String { private: // 字符数组做字符串 char *data = nullptr; // 字符串实际长度 int length = 0; // 已分配的字符数量 int allocSize = 0; void copyData(const char *source, int sourceLength); bool equals(const char *source, int sourceLength) const; void addString(const char *source, int sourceLength); public: explicit String(int size); String(const char *data, int length); explicit String(const char *source); String(const String &source); String(); ~String(); bool operator==(const String &source) const; bool operator==(const char *source) const; bool operator>(const String &compareString) const; String &operator+=(const String &source); String &operator+=(const char *source); String &operator=(const String &source); String &operator=(const char *source); String &operator+(const char *source); String &operator+(const String &source); friend std::ostream &operator<<(std::ostream &outputStream, const String &source); friend std::istream &operator>>(std::istream &outputStream, String &source); char operator[](int i); int Length() const; }; #endif //WORK20220401_STRING_H