#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();
//size函数
int length();
//c_str函数
const char* c_str();
//at函数
char &at(int pos);
};
//判空函数
bool myString::empty()
{
return 0==size;
}
//size函数
int myString::length()
{
return size;
}
//c_str函数
const char* myString::c_str()
{
return str;
}
//at函数
char &myString::at(int pos)
{
char &s=str[pos];
return s;
}
int main()
{
myString str1;
cout<<str1.c_str()<<endl;//输出空字符串
myString str2("hello");
cout<<str2.c_str()<<endl;
myString str3=str2;
cout<<str3.c_str()<<endl;
if(0==str3.empty())
{
str3.at(0)='w';
str3.at(1)='o';
str3.at(2)='r';
str3.at(3)='l';
str3.at(4)='d';
str3.at(5)='\0';
cout<<"str3="<<str3.c_str()<<endl;
}
return 0;
}