#include <iostream>
#include<cstring>
using namespace std;
//仿照string完成mystring类
class mystring
{
private:
char *str; //记录c风格的字符串
int size; // 记录字符串的实际长度
public:
//无参构造
mystring():size(10)
{
str=new char[size];
}
//有参构造
mystring(const char *s)
{
size=strlen(s);
str=new char[size+1];
strcpy(str,s);
}
bool empty();
int mysize();
char* myc_str();//将c++风格的字符串转换成c语言风格的字符串
char &at(int index);
void show();
//二倍扩容
void expend();
//析构函数
~mystring()
{
delete [] str;
}
};
//判空函数
bool mystring::empty()
{
return size==0;
}
int mystring::mysize()
{
return size;
}
char* mystring::myc_str()
{
return str;
}
char &mystring::at(int index)
{
if(index<0||index>=size)
{
cout<<"index error"<<endl;
}
return str[index];
}
void mystring::show()
{
for(int i=0;i<size;i++)
{
cout<<str[i]<<" ";
}
cout<<endl;
}
void mystring::expend()
{
char *temp = new char[size*2];
strcpy(temp,str);
delete []str;
str = temp;
size = size*2;
}
int main()
{
mystring zf1("hello a");
cout<<zf1.mysize()<<endl;
cout<<zf1.at(3)<<endl;
zf1.show();
if(zf1.empty())
{
cout<<"字符串非空"<<endl;
}
else {
cout<<"字符串不为空"<<endl;
}
return 0;
}
思维导图