构建mystring类完成string功能
#include <iostream>
#include <cstring>
using namespace std;
class mystring
{
private:
char *str; //存储字符串
int size; //记录字符串长度
public:
mystring():size(10) //无参构造
{
str=new char[size];
cout<<"无参构造"<<endl;
}
mystring(const char *s) //有参构造
{
size=strlen(s);
str=new char[size+1];
strcpy(str,s);
cout<<"有参构造"<<endl;
}
mystring(const mystring &other ) //拷贝构造
{
size=other.size;
str=new char[size+1];
strcpy(str,other.str);
cout<<"拷贝构造"<<endl;
}
~mystring() //析构函数
{
delete []str;
cout<<"析构函数"<<endl;
}
bool empty() //判空函数
{
if(strlen(str)==0)
return false;
else
return true;
cout<<"判空函数"<<endl;
}
int mysize() //字符串大小
{
return size;
}
const char *c_str() //c_str函数
{
return str;
}
char &at(int pos) //at函数
{
if(pos<0||pos>=size)
{
cout<<"超出字符串范围"<<endl;
}
return str[pos];
}
};
int main()
{
mystring s1;
cout << "s1.c_str() = " << s1.c_str() << endl;
mystring s2("hello world");
cout << "s2.c_str() = " << s2.c_str() << endl;
mystring s3(s2);
cout << "s3.c_str() = " << s3.c_str() << endl;
cout << "s3.empty() = " << s3.empty() << endl;
cout << "s3.mysize() = " << s3.mysize() << endl;
cout << "s23.at(12) = " << s3.at(12) << endl;
return 0;
}