#include <iostream>
#include <cstring>
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(mystring & other):str(new char(*(other.str))),size(other.size)
{
strcpy(str,other.str);
}
//析构函数
~mystring()
{
delete str;
}
//判空函数
bool empty()
{
if(strlen(str)==0)
{
return true;
}
else
{
return false;
}
}
//size函数
int length()
{
return size;
}
//c_str函数
const char* c_str()
{
return str;
}
//at函数
char &at(int pos)
{
if(pos>=size||pos<0)
{
cout<<"error pos"<<endl;
}
return str[pos];
}
};
int main()
{
//有参构造
mystring str1("Hello World!");
cout<<"str1:"<<str1.c_str()<<endl;
cout<<endl;
//拷贝构造
mystring str2(str1);
cout<<"str2:"<<str2.c_str()<<endl;
cout<<endl;
//判空
cout<<"empty:"<<boolalpha<<str2.empty()<<endl;
cout<<endl;
//size函数
cout<<"size:"<<str2.length()<<endl;
cout<<endl;
//c_str函数
cout<<"c_str:"<<str2.c_str()<<endl;
cout<<endl;
//at函数
cout<<"at(4):"<<str2.at(4)<<endl;
cout<<endl;
return 0;
}
C++day1作业
最新推荐文章于 2024-11-07 22:35:51 发布