利用c++实现string

简单实现一个c++中的string类(本贴中的mystring),实现了部分功能

文章目录


前言

简单实现my_string的示例;


一、什么是c++?

        C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛;C++支持多种编程范式面向对象编程、泛型编程和过程化编程。最新正式标准C++于2014年8月18日公布。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性。

二、实现my_string

1.声明定义;

代码如下:

#include <iostream>
#include<cstring>
using namespace std; 
 
class mystring
{
public:
	mystring();
	mystring(const char *ch);
	~mystring();
	mystring& operator=(const char *ch);
	mystring& operator=(mystring &obj);
	mystring operator+(mystring &obj);
	void operator+=(mystring &obj);
	bool operator==(mystring &obj);
	friend ostream& operator<<(ostream &out, mystring &obj);
	friend istream& operator>>(istream &in, mystring &obj);
private:
	int size;
    char *buf;
};

2.函数的实现

代码如下:

对声明的函数进行展开;

mystring::mystring()
{
	buf = new char[1];
	buf[0] = '\0';
	size = 0;
}
 
mystring::mystring(const char *ch)
{
	this->size = strlen(ch);
	buf = new char[size+1];
	strcpy(buf,ch);
	buf[size] = '\0'; 
}
 
mystring::~mystring()
{
	size = 0;
	delete [] buf;
	buf = NULL;
}
 
mystring& mystring::operator=(const char *ch)
{
	delete buf;
	size = strlen(ch);
	buf = new char[size+1];
	strcpy(buf,ch);
	buf[size] = '\0'; 
	return *this;
}
 
mystring& mystring::operator=(mystring &obj)
{
	delete this->buf;
	this->size = obj.size;
	this->buf = new char[size+1];
	this->buf = obj.buf;
	return *this;
}
 
mystring mystring::operator+(mystring &obj)
{
	char ch[this->size + obj.size] = {0};
	strcpy(ch,this->buf);
	strcat(ch,obj.buf);
	mystring tempstring(ch);
	return tempstring; 
}
 
void mystring::operator+=(mystring &obj)
{
	this->size += obj.size;
	char ch[(this->size)+1] = {0};
	strcpy(ch,this->buf);
	strcat(ch,obj.buf);
	delete this->buf;
	buf = new char[(this->size)+1];
	strcpy(this->buf,ch);
	this->buf[(this->size)+1] = '\0';
}
 
bool mystring::operator==(mystring &obj)
{
	if(this->size != obj.size)
	{
		return false;
	}
	else
	{
		for(int i = 0; i < this->size; i++)
		{
			if(this->buf[i] != obj.buf[i])
			{
				return false;
			}
		}
		return true;
	} 
}
 
ostream& operator<<(ostream &out, mystring &obj)
{
	for(int i = 0; i < obj.size; i++)
	{
		out<<obj.buf[i];
	}
	return out;
}
 
istream& operator>>(istream &in, mystring &obj)
{
	char p[64];
	in.getline(p,50);
	obj = p;
	return in;
}

3.主函数

简单的示例,提供参考;

int main(int argc, char** argv) {
	mystring str1("hello");
	cout<<"str1:"<<str1<<endl;
	mystring str2;
	str2 = "world";
	cout<<"str2:"<<str2<<endl;
	mystring str3 = str1 + str2;
	str1 += str2;
	cout<<"str1:"<<str1<<endl;
	cout <<"str3:"<<str3<<endl;
	if(str1 == str3)
	{
		cout<<"str1 == str3"<<endl;
	}
	mystring str4,str5;
	cout<<"请输入str4的buf:";
	cin>>str4;
	cout<<"请输入str5的buf:";
	cin>>str5;
	if( str4 == str5)
	{
		cout<<"str4 == str5"<<endl;
	}
	else
	{
		cout<<"str4 != str5"<<endl;
	}
	
	return 0;
}

总结

本文章主要实现了一个c++中的一个简单的string类,实现了一部分内容,仅供参考,欢迎大佬批评指教。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值