Розробка власного класу STRING

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

(20)

(21)

(22)

(23)

(24)

(25)

(26)

(27) void TPString:: insert (TPString& part, int pos, int count)

{

if (pos>len) return;

if (count>part. len) count=part. len;

if (part. len<count||count<=0) count=part. len;

if (BuffLen>=len+count+1) {

for (int i=len; i>=pos; - -i)

{

symb [i+count] =symb [i];

}

for (int i=0; i<count; i++, pos++)

{

symb [pos] =part. symb [i];

}

} else {

char *temp=new char [len+part. len+1];

strncpy (temp,symb,pos);

strncpy (temp,part. symb,count);

strncpy (temp,symb+pos,len-pos);

delete [] symb;

symb=temp;

BuffLen=len+part. len+1;

}

len+=count;

}

(3) - (5) . (7) - (24) , "" . (26) .

 

void TPString:: setString (const char* s)

{

if (BuffLen<len+1)

{

if (symb! =NULL) delete [] symb;

BuffLen=len+1;

symb=new char [BuffLen];

}

strcpy (symb,s);

}

 

.

TPStrThread TPString :

 

class TPStrThread abstract: virtual public TPString

{

}

 

abstract , , , .

, /.

 

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(20)

(21)

(22)

(23)

(24)

(25)

(26)

(27)

(28)

(29)

(30)

(31) ostream &operator<< (ostream& out, const TPStrThread& tp)

{

for (int i=0; i<tp. len; i++)

out<<tp. symb [i];

return out;

}

istream &operator>> (istream& input, TPStrThread& tp)

{

int i=256;

int k=-1;

char *temp=new char [i];

do{

k++;

if (k>i) {

i<<1;

char * t=new char [i];

strncpy (t,temp,k);

delete [] temp;

temp=t;

}

input. get (temp [k]);

}while (temp [k] ! =\n);

temp [k] =0;

if (tp. symb! =NULL) delete [] tp. symb;

tp. symb=temp;

tp. BuffLen=i;

tp. len=strlen (temp);

return input;

}

(1) , . (5) , :

 

cout << … << …;

 

(8) : , , ( ) .. 2 . .

TPStrCompare TPString :

 

class TPStrCompare abstract: virtual public TPString

{}

 

:

 

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(20)

(21)

(22)

(23)

(24)

(25)

(26)

(27)

(28)

(29) bool TPStrCompare:: operator! () const

{

if (len==0) return true; else return false;

}

bool TPStrCompare:: operator! = (const TPStrCompare& part) const

{

return (strcmp (symb,part. symb) ! =0);

}

bool TPStrCompare:: operator== (const TPStrCompare& part) const

{

return! (*this! = part);

}

bool TPStrCompare:: operator< (const TPStrCompare& part) const

{

retu