c++ string类 重载实现(续)9月3日

#include
#include
#include
class Mystring
{
	private:
		int len;
		char*str;
	
	public:
	Mystring()
	{
		str=nullptr;
		len=0;
	}
	
	Mystring(const char*s)
	{
		len=strlen(s);
		str=new char[len+1];	
		strcpy(str,s);
	}
	
	
	~Mystring()
	{
		if(str!=nullptr)
		{
			delete[]str;
		}
	}



	Mystring(const Mystring &other)
	{
		len=other.len;
		str=new char[len+1];
		strcpy(str,other.str);
	}



	Mystring &operator=(const Mystring &other)//拷贝赋值
	{
		if(&other!=this)
		{
			if(str!=nullptr)
			{
				delete[]str;
				str=nullptr;

			}
			len=other.len;
			str=new char[len+1];
			strcpy(str,other.str);
		}
		return *this;
	}


	char *data()
	{
		return str;
	}

	int size()
	{
		return len;
	}


	bool empty()
	{
		return len==0;
	}


	char at(int index)
	{
		if (index<0||index>=len)
		{
			std::cout<<"越界"<len + other.len;
        mstr.str = new char[mstr.len + 1];
        std::strcpy(mstr.str, this->str);
        std::strcat(mstr.str, other.str);
        return mstr;
    }

    const char& operator[](size_t index) const //[]
	{
        return str[index];
    }



    bool operator==(const Mystring& other) const //==重载
	{
        return std::strcmp(this->str, other.str) == 0;
    }


    bool operator!=(const Mystring& other) const //!=重载
	{
        return !(*this == other);
    }


	bool operator<(const Mystring& other) const //<
	{
        return std::strcmp(str, other.str) < 0;
    }

    bool operator<=(const Mystring& other) const //<=
	{
        return std::strcmp(str, other.str) <= 0;
    }

    bool operator>(const Mystring& other) const //>
	{
        return std::strcmp(str, other.str) > 0;
    }

    bool operator>=(const Mystring& other) const //>=
	{
        return std::strcmp(str, other.str) >= 0;
    }

};





int main(int argc, const char *argv[])
{


	return 0;
}

你可能感兴趣的:(c++,开发语言)