#include <string>
#include <iostream>
using namespace std;
class sChar
{
private:
char* str;
long len;
public:
sChar(const char * ch = 0);
sChar(const sChar &ch);
~sChar();
sChar& operator+(const sChar &ch);//додати sChar + sChar
sChar& operator+(const char *ch);//додати sChar + char
sChar& CharTosCh(const char *ch);
char * sChToChar() const;//sChar перетворити в char
long sChLength() const;
friend ostream &operator<<(ostream &out, const sChar &ch){
out<<ch.sChToChar();
return out;
}
};
sChar::sChar(const char * ch){
str = 0;
len = 0;
if( ch != 0 )
{
len = strlen(ch);
str = new char[1 + len];
memcpy(str, ch, len);
str[len] = 0;
}
}
sChar::sChar(const sChar &ch){
str = 0;
len = 0;
if( ch.str != 0 )
{
len = strlen(ch.str);
str = new char[1 + len];
memcpy(str, ch.str, len);
str[len] = 0;
}
}
sChar::~sChar(){
delete str;
}
sChar& sChar::CharTosCh(const char *ch)//char перетворити в sChar
{
delete str;
len = 0;
str = 0;
if( ch != 0 )
{
len = strlen(ch);
if( len != 0 )
{
str = new char[1 + len];
memcpy(str, ch, len);
str[len] = 0;
}
}
return *this;
}
char* sChar::sChToChar() const//sChar перетворити в char
{
return str;
}
long sChar::sChLength() const{
return len;
}
sChar& sChar::operator+(const char *ch)//додати sChar + char
{
char *cpy = 0;
long size = 0;
if( ch )
{
size = strlen(ch);
cpy = new char[1 + len + size];
memcpy(cpy, str, len);
memcpy(cpy + len, ch, size);
len = len + size;
cpy[len] = 0;
delete str;
str = cpy;
}
return *this;
}
sChar& sChar::operator+(const sChar &ch)//додати sChar + sChar
{
return operator+(ch.str);
}
int main()
{
//створюємо рядок
sChar g = "string";
cout << g.sChToChar();
//додаємо рядки
sChar var1 = "C", var2 = "++";
cout << "\n" << var1 + var2 ;
//додаємо декілька рядків
cout << (sChar)"\n1" + (sChar)" 2 " + (sChar)"3";
cin.get();
return 0;
}