#include <iostream>
#include<cstring>
//仿照string类,实现myString类
using namespace std;
class myString
{
private:
char *str;//记录c风格的字符串
int size;//记录字符串的实际长度
public:
//无参构造
myString():size(10)
{
str=new char[size];//构造出一个长度为10的字符串
strcpy(str,"");
}
//有参构造
myString(const char *s)
{
size=strlen(s);
str=new char[size+1];
strcpy(str,s);
}
//拷贝构造
myString(const myString &other):size(other.size)
{
size=other.size;
str=new char[size+1];
strcpy(str,other.str);
}
//析构函数
~myString()
{
delete [] str;
}
//判空函数
bool empty()
{
return size==0;
}
//size函数
int length()
{
return size;
}
//c_str函数
const char* c_str()
{
return str;
}
//at函数
char &at(int pos)
{
char &s=str[pos];
return s;
}
};
int main()
{
myString str1;
cout<<str1.c_str()<<endl;//输出空字符串
myString str2("ni hao");
cout<<str2.c_str()<<endl;
myString str3=str2;
cout<<str3.c_str()<<endl;
if(!str3.empty())
{
str3.at(0)='h';
str3.at(1)='a';
str3.at(2)='p';
str3.at(3)='p';
str3.at(4)='y';
str3.at(5)=' ';
cout<<"str3="<<str3.c_str()<<endl;
}
return 0;
}