#include <iostream>
#include <string>
#include <cstring>
using namespace std;
class mystring
{
public:
mystring() = default;
mystring(const char* pstr)
{
str = new char[strlen(pstr) + 1];
strcpy(str, pstr);
}
~mystring()//析构
{
delete[]str;
str = nullptr;
}
mystring(const mystring& ms)
{
str = new char[strlen(ms.str) + 1];
strcpy(str, ms.str);
}
void print()
{
cout << str << endl;
}
char* myc_str()//有'\0'的
{
char* temp = new char[strlen(str) + 1];
strcpy(temp, str);
return temp;
}
char* mydata()//无'\0'
{
char* temp = new char[strlen(str)];
strcpy(temp, str);
return temp;
}
char* myapp(const mystring& boy)//追加
{
char* temp = new char[strlen(str) + strlen(boy.str)];
strcpy(temp, str);
strcpy(temp + strlen(str), boy.str);
return temp;
}
int mycompare(const mystring& boy)//大于返回1,小于返回-1,等于返回0
{
int i = 0;
while (str[i]&&boy.str[i])
{
if (str[i] > boy.str[i])return 1;
if (str[i] < boy.str[i])return -1;
i++;
}
if (str[i + 1] > boy.str[i + 1])return 1;
if (str[i + 1] == boy.str[i + 1])return 0;
if (str[i + 1] < boy.str[i + 1])return -1;
}
protected:
char* str;
};
int main()
{
mystring zx;
mystring zz("ILoveYou");
zz.print();//打印ILoveYou
mystring zy(zz);
zy.print();//打印ILoveYou
mystring zw = zz;
zw.print();//ILoveYou
cout << zw.myc_str() << endl;//打印ILoveYou
cout << zw.mydata() << endl;//打印ILoveYou
cout << "----" << endl;
cout << zz.myapp(zw) << endl;//打印ILoveYouILoveYou
mystring Z("I");
cout << Z.mycompare(zz) << endl;//打印-1
mystring ZZ("ILoveYou");
cout << ZZ.mycompare(zz) << endl;//打印0
return 0;
}