仿照string类,实现myString
#include <iostream>
#include <cstring>
using namespace std;
class myString
{
public:
//无参构造
myString():size(10)
{
str=new char[size];//堆区创建空间
}
//有参构造
myString(const char *s)
{
size=strlen(s);//获取长度
str=new char[size+1];//因为'\0'长度加一
strcpy(str,s);//赋值
}
//析构函数
~myString()
{
delete str;
cout<<"myString::析构函数"<<endl;
}
bool str_empty();//判空
int str_size();//返回实际长度
char * c_str();//转换c风格
char &at(int index);//访问字符串
void expand();//二倍扩容
private:
char *str;//c风格字符串
int size;//字符串大小
};
bool myString::str_empty()
{
return strlen(str)==0;//判断字符长度是否为0;
}
int myString::str_size()
{
return strlen(str);//返回字符串长度
}
char * myString::c_str()
{
return str;//转换
}
char& myString::at(int index)
{
return str[index];//访问
}
void myString::expand()
{
size=size*2;//扩容
}
int main()
{
myString s("abcd");
cout<<"size= "<<s.str_size()<<" s= "<<s.c_str()<<" s[1]= "<<s.at(1)<<endl;
return 0;
}