[ create a new paste ] login | about

Link: http://codepad.org/pVt6BosR    [ raw code | output | fork ]

C++, pasted on Dec 7:
#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;
}


Output:
1
2
3
string
C++
1 2 3


Create a new paste based on this one


Comments: