#include <iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
class StringClass
{
char* s;
int n;
friend istream& operator>>(istream& istr, StringClass& r);
friend ostream& operator<<(ostream& ostr, StringClass& r);
public:
StringClass() { s = new char('\0'); n = 0; }
StringClass(char* r);
StringClass(StringClass& t);
StringClass& operator=(char *r);
StringClass& operator=(StringClass& t);
bool operator==(char* r);
bool operator==(StringClass& t);
bool operator<(char* r);
bool operator>(StringClass& t);
StringClass operator+(char* r);
StringClass operator+(StringClass& t);
char& operator[](int i);
int Strlen() const { return n; }
~StringClass() { delete[]s; }
};
StringClass::StringClass(char* r)
{
n = strlen(r);
s = new char[n + 1];
strcpy(s, r);
}
StringClass::StringClass(StringClass& t)
{
n = t.n;
s = new char[n + 1];
strcpy(s, t.s);
}
StringClass& StringClass::operator=(char* r)
{
delete[]s;
n = strlen(r);
s = new char[n + 1];
strcpy(s, r);
return *this;
}
StringClass& StringClass::operator=(StringClass& t)
{
delete[]s;
n = t.n;
s = new char[n + 1];
strcpy(s, t.s);
return *this;
}
bool StringClass::operator==(char* r)
{
if (s == NULL && r == NULL)return true;
else if (s == NULL || r == NULL)return false;
int i = 0;
while (s[i] != NULL&&r[i] != NULL)
if (s[i] != r[i]) return false;
else i++;
if (s[i] == NULL&&r[i] == NULL) return true;
else return false;
}
bool StringClass::operator==(StringClass& t)
{
if (s == NULL&&t.s == NULL) return true;
else if (s == NULL || t.s == NULL) return false;
int i = 0;
while (s[i] != NULL&&t.s[i] != NULL)
if (s[i] != t.s[i]) return false;
else i++;
if (s[i] == NULL&&t.s[i] == NULL) return true;
else return false;
}