my_string.h
#ifndef MY_STRING_H
#define MY_STRING_H
#include <iostream>
class My_string {
private:
char *ptr; // 指向字符数组的指针
int size; // 字符串的最大容量
int len; // 字符串当前长度
public:
// 无参构造
My_string();
// 有参构造
My_string(const char* src);
My_string(int num, char value);
// 拷贝构造
My_string(const My_string& other);
// 拷贝赋值
My_string& operator=(const My_string& other);
// 析构函数
~My_string();
// 判空
bool empty();
// 尾插
void push_back(char value);
// 尾删
void pop_back();
// at 函数实现
char& at(int index);
// 清空函数
void clear();
// 返回 C 风格字符串
char* data();
// 返回实际长度
int get_length();
// 返回当前最大容量
int get_size();
// 扩容函数
void resize();
// 重载 + 运算符,连接两个字符串
My_string operator+(const My_string& other) const;
// 重载 [] 运算符,访问指定位置的字符
char& operator[](int index);
// 重载 > 运算符,比较两个字符串大小
bool operator>(const My_string& other) const;
// 重载 < 运算符
bool operator<(const My_string& other) const;
// 重载 == 运算符
bool operator==(const My_string& other) const;
// 重载 >= 运算符
bool operator>=(const My_string& other) const;
// 重载 <= 运算符
bool operator<=(const My_string& other) const;
// 重载!= 运算符
bool operator!=(const My_string& other) const;
// 重载 += 运算符,连接一个字符串
My_string& operator+=(const My_string& other);
// 重载 += 运算符,连接一个字符
My_string& operator+=(char value);
// 输入运算符重载
friend std::istream& operator>>(std::istream& is, My_string& str);
// 输出运算符重载
friend std::ostream& operator<<(std::ostream& os, const My_string& str);
};
#endif
my_string.c
#include "My_string.h"
int main() {
My_string str1;
str1.push_back('a');
str1.push_back('b');
str1.push_back('i');
str1.push_back('d');
str1.push_back('a');
std::cout << "字符串: " << str1 << " 长度: " << str1.get_length() << " 容量: " << str1.get_size() << std::endl;
My_string str2 = str1;
str2.pop_back();
std::cout << "复制的字符串: " << str2 << " 长度: " << str2.get_length() << " 容量: " << str2.get_size() << std::endl;
My_string str3 = str1 + str2;
std::cout << "连接后的字符串: " << str3 << std::endl;
str1 += "cde";
std::cout << "str1 添加字符串后: " << str1 << std::endl;
str2 += 'f';
std::cout << "str2 添加字符后: " << str2 << std::endl;
std::cout << "str1 > str2? " << (str1 > str2) << std::endl;
std::cout << "str1 < str2? " << (str1 < str2) << std::endl;
std::cout << "str1 == str2? " << (str1 == str2) << std::endl;
std::cout << "str1 >= str2? " << (str1 >= str2) << std::endl;
std::cout << "str1 <= str2? " << (str1 <= str2) << std::endl;
std::cout << "str1!= str2? " << (str1!= str2) << std::endl;
My_string str4;
std::cin >> str4;
std::cout << "输入的字符串: " << str4 << std::endl;
return 0;
}