【C++】模拟实现String类功能( 完整代码)

完成功能

1.默认成员函数
2.重载比较运算符(<,<=,>,>=,==,!=)
3.运算符重载
4.追加一个字符的PushBack函数,追加一个字符串的Append函数
5.删除len长度的字符串 Erase函数
6.判断字符串的长度,并适当增容
7.插入一个字符,插入一个字符串 Insert函数
8.找一个字符,找一个字符串 Find函数

完整代码
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1

#include<assert.h>
#include <cstring>
#include<iostream>
using namespace std;


namespace myString
{
	class String
	{
	public:
		typedef char* Iterator;  //迭代器
		Iterator begin()
		{
			return _str;
		}
		Iterator  end()
		{
			return _str + _size;
		}
		String(const char* str = "")    //默认构造
		{
			if (nullptr == str)
			{
				assert(false);
				return;
			}
			_size = strlen(str);
			_capacity = _size;
			_str = new char[_capacity + 1]; 
			strcpy(_str, str);    //参数构造
		}
		String(const String& s)           //拷贝构造
			: _str(nullptr)
			, _size(0)
			, _capacity(0)
		{
			String tmp(s._str);
			this->Swap(tmp);
		}

		void Swap(String& s)      //交换对象
		{
			swap(_str, s._str);
			swap(_size, s._size);
			swap(_capacity, s._capacity);
		}
		String& operator=(String s)   //赋值重载
		{
			this->Swap(s);
			return *this;
		}

		~String()        //析构函数
		{
			if (_str)
			{
				delete[]_str;
				_size = 0;
				_capacity = 0;
			}
		}		
		char* c_str()  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值