#include <string.h>
class String
{
private:
char *str;
int size;
public:
String(char *s="")
{
size=strlen(s);
str=new char[size+1];
strcpy(str,s);
}
String(String &strObj)
{
size=strObj.getLength();
str=new char[size+1];
strcpy(str,strObj.str);
}
~String()
{
delete []str;
}
const char *toString()
{
return str;
}
int getLength()
{
return strlen(str);
}
String &operator =(String &strObj)
{
delete []str;
size=strObj.getLength();
str=new char[size+1];
strcpy(str,strObj.str);
return *this;
}
String &operator =(char *s)
{
delete []str;
size=strlen(s);
str=new char[size+1];
strcpy(str,s);
return *this;
}
String operator +(String &strObj)
{
int tmpsize;
char *tmpstr;
tmpsize=getLength()+strObj.getLength();
tmpstr=new char[tmpsize+1];
strcpy(tmpstr,str);
strcat(tmpstr,strObj.str);
return String(tmpstr);
}
String operator +(char *s)
{
int tmpsize;
char *tmpstr;
tmpsize=getLength()+strlen(s);
tmpstr=new char[tmpsize+1];
strcpy(tmpstr,str);
strcat(tmpstr,s);
return String(tmpstr);
}
friend String operator +(char *s,String &strObj)
{
int tmpsize;
char *tmpstr;
tmpsize=strlen(s)+strObj.getLength();
tmpstr=new char[tmpsize+1];
strcpy(tmpstr,s);
strcat(tmpstr,strObj.str);
return String(tmpstr);
}
String &operator +=(String &strObj)
{
*this=*this+strObj;
return *this;
}
String &operator +=(char *s)
{
*this=*this+s;
return *this;
}
String &toUpper()
{
for(int i=0;i<=size;i++)
{
if(*(str+i)>='a' && *(str+i)<='z')
{
*(str+i)-=32;
}
}
return *this;
}
String &toLower()
{
for(int i=0;i<=size;i++)
{
if(*(str+i)>='A' && *(str+i)<='Z')
{
*(str+i)+=32;
}
}
return *this;
}
char charAt(int i)
{
if(i<0 || i>getLength())
{
return ('/0');
}
else
{
return *(str+i);
}
}
char operator [](int i)
{
return charAt(i);
}
int indexOf(char c)
{
for(int i=0;i<=size;i++)
{
if(*(str+i)==c){return i;}
}
return -1;
}
};