• C++练习 | 运算符重载练习(字符串相关)


    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <string>
    #include <iomanip>
    using namespace std;
    class String
    {
    private:
        char *s;
    public:
        String()
        {
            s=new char[1000];
        }
        String(const char *t)
        {
            s=new char[1000];
            strcpy(s,t);
        }
        String(const String &t)
        {
            s=new char[1000];
            strcpy(s,t.s);
        }
        ~String()
        {
            delete []s;
        }
        String & operator=(const char *t)
        {
            strcpy(this->s,t);
            return *this;
        }
        String & operator=(const String &t)
        {
            this->s=t.s;
            return *this;
        }
        String operator+(const char *t)
        {
            char *t1=nullptr;
            strcpy(t1,this->s);
            strcat(t1,t);
            return t1;
        }
        String operator+(const String &t)
        {
            char *t1 = nullptr;
            strcpy(t1,this->s);
            strcat(t1,t.s);
            return t1;
        }
        String & operator+=(const char *t)
        {
            strcat(this->s,t);
            return *this;
        }
        String & operator+=(const String &t)
        {
            strcat(this->s,t.s);
            return *this;
        }
        friend istream & operator>>(istream & is, String &t1)
        {
            is>>t1.s;
            return is;
        }
        friend ostream & operator<<(ostream & os, String &t2)
        {
            os<<t2.s;
            return os;
        }
        friend bool operator==(const String &t1, const char *t2)
        {
            if(strcmp(t1.s,t2))
                return 0;
            else
                return 1;
        }
        friend bool operator==(const String &t1, const String &t2)
        {
            if(strcmp(t1.s,t2.s))
                return 0;
            else
                return 1;
        }
        friend bool operator!=(const String &t1, const char *t2)
        {
            return strcmp(t1.s,t2);
        }
        friend bool operator!=(const String &t1, const String &t2)
        {
            return strcmp(t1.s,t2.s);
        }
    };
    int main()
    {
        String s;
        s += "hello";
        cout<<s<<endl;
        String s1("String1");
        String s2("copy of ");
        s2 += "String1";
        cout << s1 << "
    " << s2 << endl;
        String s3;
        cin >> s3;
        cout << s3 << endl;
        String s4("String4"), s5(s4);
        cout << (s5 == s4) << endl;
        cout << (s5 != s4) << endl;
        String s6("End of "), s7("my string.");
        s6 += s7;
        cout << s6 << endl;
        return 0;
    }
  • 相关阅读:
    开源项目中标准文件命名和实践
    linux远程拷贝命令-scp
    Linux访问Windows共享目录的方法——smbclient
    ADB Fix error : insufficient permissions for device
    APT典型应用示例
    我的参考书籍列表
    GCC Reference
    GNU make简介
    Windows下搭建Android NDK开发环境及命令行编译
    Git命令行基本操作
  • 原文地址:https://www.cnblogs.com/tsj816523/p/10705924.html
Copyright © 2020-2023  润新知