仿照string类,写一个my_string类
class my_string
{
private:
char *str;
int len;
public:
//无参构造
//有参构造
//拷贝构造
//拷贝赋值
//bool my_empty() 判空
//int my_size() 求长度
//char *my_str() 转化为c风格字符串
}
#include <iostream>
#include <string.h>
using namespace std;
class my_string
{
private:
char *str=NULL;
int len;
public:
// 无参构造
my_string(){
str=NULL;
len=0;
}
// 有参构造
my_string(const char *newstr)
{
len=strlen(newstr);
str=new char[len+1];
strcpy(str,newstr);
}
my_string(int l,char c)
{
len=l;
str=new char[len+1];
char *rp=str;
for(int i=0;i<len;i++){
*rp=c;
rp++;
}
*rp=0;
}
// 拷贝构造
my_string(my_string& sa):len(sa.len)
{
str=new char[len+1];
strcpy(str,sa.str);
}
// 拷贝赋值
my_string& operator=(my_string& R)
{
len=R.len;
if(str){
delete str;
}
str=new char[len+1];
strcpy(str,R.str);
return *this;
}
my_string& operator=(const char* oldstr)
{
len=strlen(oldstr);
if(str){
delete str;
}
str=new char[len+1];
strcpy(str,oldstr);
return *this;
}
// bool my_empty() 判空
bool my_empty()
{
return len?true:false;
}
// int my_size() 求长度
int my_size()
{
return len;
}
// char *my_str() 转化为c风格字符串
char *my_str()
{
return str;
}
~my_string()
{
if(str)
delete str;
}
void str_show()
{
cout<<str;
}
};
int main()
{
my_string str1("test");
my_string str2(5,'t');
cout<<"带参构造"<<endl;
cout<<"str1(\"test\")\t str1:"<<str1.my_str()<<endl;
cout<<"str2(5,\'t\')\t str2:"<<str2.my_str()<<endl<<endl;
my_string str3(str1);
cout<<"拷贝构造"<<endl;
cout<<"str3(str1)\t str3:"<<str3.my_str()<<endl<<endl;
my_string str4;
str4=str2;
cout<<"无参构造,拷贝赋值"<<endl;
cout<<"str4;str4=str2\t str4="<<str4.my_str()<<endl<<endl;
cout<<"判空"<<endl;
my_string str5("");
cout<<"str5(\"\")\t str5.my_empty="<<str5.my_empty()<<endl;
cout<<"str1.my_empty="<<str1.my_empty()<<endl<<endl;
cout<<"求长度"<<endl;
cout<<"str1.my_size="<<str1.my_size()<<endl<<endl;
return 0;
}