#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];
}
void show()const
{
cout<<this->str<<endl;
}
void show()
{
cout<<this->str<<endl;
}
//[]重载
char operator[](int n)
{
if(n<0||n>=this->size)
return '#';
else
{
return str[n];
}
}
//+号重载
//>号重载
bool operator>(const myString &other)const
{
if( strcmp(this->str,other.str)>0)
return true;
else
return false;
}
//设置友元
friend myString & operator>>(istream &l,myString &o);
//operator=
mystring operator=(const mystring &R)
{
mystring temp;
temp.str = R.str;
temp.size=R.size;
return temp;
}
//operator[]
//operator+
const mystring operator+(const mystring &R)const
{
mystring temp;
strcat(this->str,R.str);
temp.size = this->size+R.size;
return temp;
}
// const mystring &operator+(const myString &other)
// {
// strcat(this->str,other.str);
// return *this;
// }
/*
//operator==
bool mystring operator==(const mystring &R)const
{
return (this->size==R.size);
}
//operator<
bool mystring operator<(const mystring &R)const
{
return (this->size<R.size);
}
//operator>
bool mystring operator>(const mystring &R)const
{
return (this->size>R.size);
}
//operator<<
friend ostream &operator<<(ostream &L,const mystring &O);
//operator>>
friend istream &operator>>(istream &L,const mystring &O);
*/
};
/*
ostream &operator<<(ostream &L,const mystring &O)
{
}
istream &operator>>(istream &L,const mystring &O)
{
}
*/
int main()
{
//有参构造
mystring str1("Hello******");
mystring str3("nihao------");
cout<<"str1:"<<str1.c_str()<<endl;
cout<<"str1+str3:"<<(str1+str3).c_str()<<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(6):"<<str2.at(6)<<endl;
cout<<endl;
return 0;
}
C++day2
最新推荐文章于 2024-11-09 20:38:27 发布