#include <iostream>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
using namespace std;
class String
{
private:
char *s;
public:
String()
{
s=new char[];
}
String(const char *t)
{
s=new char[];
strcpy(s,t);
}
String(const String &t)
{
s=new char[];
strcpy(s,t.s);
}
~String()
{
delete []s;
}
String & operator=(const char *t)
{
strcpy(this->s,t);
return *this;
}
String & operator=(const String &t)
{
this->s=t.s;
return *this;
}
String operator+(const char *t)
{
char *t1=nullptr;
strcpy(t1,this->s);
strcat(t1,t);
return t1;
}
String operator+(const String &t)
{
char *t1 = nullptr;
strcpy(t1,this->s);
strcat(t1,t.s);
return t1;
}
String & operator+=(const char *t)
{
strcat(this->s,t);
return *this;
}
String & operator+=(const String &t)
{
strcat(this->s,t.s);
return *this;
}
friend istream & operator>>(istream & is, String &t1)
{
is>>t1.s;
return is;
}
friend ostream & operator<<(ostream & os, String &t2)
{
os<<t2.s;
return os;
}
friend bool operator==(const String &t1, const char *t2)
{
if(strcmp(t1.s,t2))
return ;
else
return ;
}
friend bool operator==(const String &t1, const String &t2)
{
if(strcmp(t1.s,t2.s))
return ;
else
return ;
}
friend bool operator!=(const String &t1, const char *t2)
{
return strcmp(t1.s,t2);
}
friend bool operator!=(const String &t1, const String &t2)
{
return strcmp(t1.s,t2.s);
}
};
int main()
{
String s;
s += "hello";
cout<<s<<endl;
String s1("String1");
String s2("copy of ");
s2 += "String1";
cout << s1 << "\n" << s2 << endl;
String s3;
cin >> s3;
cout << s3 << endl;
String s4("String4"), s5(s4);
cout << (s5 == s4) << endl;
cout << (s5 != s4) << endl;
String s6("End of "), s7("my string.");
s6 += s7;
cout << s6 << endl;
return ;
}
05-26 03:20