学习C++的第五天!

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值