仿照string类,实现mystring
#include <iostream>
#include<string.h>
using namespace std;
class MyString
{
private:
char *str; //记录c风格的字符串
int size=0; //记录字符串实际长度
public:
//无参构造:定义了一个字符串
MyString():size(10)
{
str=new char[size]; //申请空间
strcpy(str,"");
}
//有参构造:定义一个字符串,并初始化
MyString(const char *s)
{
size=strlen(s); //长度
str=new char[size+1]; //申请空间
strcpy(str,s);
}
//1.判空
bool empty();
//2.size函数
int my_size();
//3.c_str函数
char *c_str();
//4.at函数
char &at(int index);
//二倍扩容
//析构函数
~MyString()
{
delete []str;
}
};
//1.判空
bool MyString::empty()
{
return strlen(str)==0;
}
//2.size字符串实际长度函数
int MyString::my_size()
{
// size=strlen(str);
return size;
}
//3.c_str函数 将c++风格的字符串向c语言风格的字符串进行转换
char* MyString::c_str()
{
return str;
}
//4.at函数
char &MyString::at(int index)
{
if(index<0 || index>=size)
{
cout<<"error"<<endl;
}
return str[index];
}
/*************************主函数******************************/
int main()
{
MyString str1("ni hao");
int len=str1.my_size();
cout<<"str1大小:"<<len<<endl;
cout<<str1.at(5)<<endl;
//判断是否为空
if(str1.empty())
{
cout<<"字符串为空"<<endl;
}
else
{
cout<<"字符串非空"<<endl;
}
return 0;
}
思维导图