zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    C# 哈希表
    C# 连接SQL Server数据库的连接字符串<转>
    C# ADO.NET中的五个主要对象<转>
    C# integrated security=SSPI<转>
    C# ADO.NET访问SQL Server数据库<转>
    C# .NET 页面间传值的几种方法<转>
    C# Datatable删除行的Delete和Remove方法
    C# DataTable转json
    CSP2019 爆炸记
    停更通知
  • 原文地址:https://www.cnblogs.com/tsj816523/p/10705924.html
Copyright © 2011-2022 走看看