当前位置: 首页 > article >正文

DAY65

作业:

将myString类中能够实现的操作都实现一遍

#include <iostream>
#include <cstring>

using namespace std;

//定义一个复数类:有实部和虚部组成的一个数据: a+bi
class Mystring
{
private:
    char *str;
    int size;

public:
    Mystring():size(10){};    //无参
    Mystring(char* s)  //有参
    {
        size = sizeof(s);
        str = new char[size+1];
        strcpy(str,s);
    }
    ~Mystring()
    {
        delete(str);
    }

    //size函数
    int len()
    {
        return strlen(str);
    }



    //二倍扩容
    void kr()
    {
        char* str1;
        str1= new char[size*2+1];
        strcpy(str1,str);
        str = str1;
        size = size*2;
    }

    //定义输出函数
    void show()
    {
        if(size > 0)
        {
            cout<<str<<endl;
        }
    }

    //定义成员函数版完成字符串的赋值运算:
    const Mystring operator=(const Mystring &R)const
    {
        strcpy(this->str,R.str);
        return *this;
    }

    //at函数
    char &at(int index)
    {
        if(size<=0)
        {
            cout<<"字符串为空"<<endl;
        }
        return str[index-1];
    }

    //定义成员函数版完成字符串的访问:
    char &operator[](int n)
    {
        return str[n-1];
    }

    char* data()
    {
        return str;
    }

    //c_str函数
    const char* c_str()
    {
        const char* ptr = str;
        return ptr;
    }

    //判空函数
    bool emtpy()
    {
        return size;
    }

    int capacity()
    {
        return size;
    }

    //清空内容
    void clear()
    {
        delete(str);
        str = new char[10];
    }

    //后附字符到结尾
    void append(char* s)
    {
        int num = strlen(str) + strlen(s);
        if(num > size)
        {
            kr();
        }
        strcat(str,s);
    }

    //成员函数版完成+=运算符重载
    Mystring &operator+=(const Mystring &R)
    {
        strcat(this->str,R.str);

        return *this;
    }

    //定义成员函数版完成字符串的+运算:
    const Mystring operator+(const Mystring &R)const
    {
        strcat(this->str,R.str);
        return *this;
    }

    //定义成员函数版完成关系运算符重载:
    bool operator>(const Mystring &R)const
    {
        if(strcmp(this->str,R.str)>0)
        {
            return true;
        }else
        {
            return false;
        }
    }

    bool operator<(const Mystring &R)const
    {
        if(strcmp(this->str,R.str)<0)
        {
            return true;
        }else
        {
            return false;
        }
    }

    bool operator==(const Mystring &R)const
    {
        if(strcmp(this->str,R.str)==0)
        {
            return true;
        }else
        {
            return false;
        }
    }

    bool operator>=(const Mystring &R)const
    {
        if(strcmp(this->str,R.str)>=0)
        {
            return true;
        }else
        {
            return false;
        }
    }

    bool operator<=(const Mystring &R)const
    {
        if(strcmp(this->str,R.str)<=0)
        {
            return true;
        }else
        {
            return false;
        }
    }

    //定义友元
    friend ostream & operator<<(ostream &L,const Mystring &R);

    friend istream & operator>>(istream &L,Mystring &R);

};

//自定义插入运算符重载:
ostream & operator<<(ostream &L,const Mystring &R)
{
    L<<R.str;

    //返回左操作
    return L;
}

//自定义插入运算符重载:
istream & operator>>(istream &L,Mystring &R)
{
    L>>R.str;

    //返回左操作
    return L;
}


int main()
{


    return 0;
}


http://www.kler.cn/a/287930.html

相关文章:

  • zabbix7.0实操指南:基于麒麟V10操作系统部署zabbix7.0
  • Go八股(Ⅵ)Goroutine 以及其中的锁和思想
  • 详解map与multimap容器
  • 零基础利用实战项目学会Pytorch
  • 【Linux:IO多路复用(select、poll函数)
  • 用OMS进行 OceanBase 租户间数据迁移的测评
  • 基于STM32和OpenCV的车载智能导航系统:实现实时交通标志与信号识别与预警(代码示例)
  • 将string类中能够实现的操作都封装在MyString类中
  • 如何保证Redis与Mysql双写一致性?
  • 【话题讨论】VS Code:倍增编程动力,实现效率飞跃
  • TCP 和 UDP 区别
  • c++ 定义宏常量
  • 有什么简单方便的cad编辑器?2024快速进行cad编辑的软件合集
  • 神经网络训练不起来怎么办(五)| Batch Normalization
  • 【无标题】html前段小知识点
  • Django Admin对自定义的计算字段进行排序
  • hugging face 利用现有模型进行预测
  • C语言 strlen求字符串长度
  • Linux驱动(三):字符设备驱动之杂项
  • Go wv(WebView2) GUI框架介绍和使用
  • 【Python报错已解决】“NameError: name ‘re‘ is not defined”
  • BeanFactory 和 FactoryBean 的区别
  • 用QT写一个加载模板文件,替换关键字为实际值
  • 【前端框架】你知道的前端框架有哪些呢
  • JavaWeb(基于SpringBoot开发)全总结(1)
  • 藏头诗娱乐小程序源码