简单实现一个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类,实现了一部分内容,仅供参考,欢迎大佬批评指教。