Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include "Person.h"
- void TString::SetStr(char* ob)
- {
- //delete[] str;
- str = new char[strlen(ob)+1];
- strcpy(str+1,ob);
- str[0] = strlen(ob);
- //cout<<"Set Str Worked\n";
- }
- TString::TString()
- {
- char buf[100];
- sprintf(buf,"Just Like Heaven"); //12
- SetStr(buf);
- }
- TString::TString(char* Str)
- {
- SetStr(Str);
- }
- TString::TString(const TString &ob)
- {
- SetStr(ob.str);
- }
- TString::~TString()
- {
- cout<<"Destructor Worked\n";
- if(str!=NULL)
- delete[]str;
- }
- void TString::operator=(const TString &s)
- {
- SetStr(s.str+1);
- // return *this;
- }
- TString TString::operator+(const TString &s2)const
- {
- TString sop;
- sop.GetStr();
- strcpy(sop.str+1,str+1);
- strcat(sop.str+str[0],s2.str+1);
- sop.str[0]=strlen(sop.str)-1;
- return sop;
- }
- int TString::GetLength()
- {
- return str[0];
- }
- void TString::output()
- {
- cout<<"String : "<<GetStr()<<endl;
- cout<<"Length = "<<GetLength()<<endl;
- }
- TString TString::operator%(TString &s2)//логічне додавання ,додає до першого те, чого нема в другому .
- //ну, не додає,але мало б
- {
- TString sop;
- int k;
- int sz=str[0]+s2.str[0];
- sop.str=new char[sz+1];
- strcpy(sop.str+1,str+1);
- delete[]str;
- bool flag=true;
- for(int j=1, k=strlen(sop.str)-1; j<=s2.str[0]; j++) //sop.str[0]
- {
- flag=true;
- for(int i=1;i<=sop.str[0];i++)
- {
- if(sop.str[i]==s2.str[j])
- {
- flag=false;
- break;
- }
- }
- if(flag)
- {
- sop.str[k+1]=s2.str[j];
- k++;
- }
- }
- sop.str[0]=strlen(sop.str)-1;
- return sop;
- }
- void TString::input()
- {
- char buffer[300];
- cout<<"Input string\n";
- cin.getline(buffer,300);
- SetStr(buffer);
- }
- int find_s2_in_s1(TString &s1, TString &s2)
- {
- int rez;
- s1.output();
- s2.output();
- if(strstr((s1.str+1), (s2.str+1))!=NULL)
- rez = strstr((s1.str+1), (s2.str+1)) - s1.str;
- else return rez=0;
- return rez;
- }
- TString ClearPoz(TString &s)
- {
- int poz=0;
- int n=1;
- cout<<"Clear from : "<<(s.str+1)<<endl;
- cin>>poz;
- cout<<"Number\n";
- cin>>n;
- TString buff;
- buff.str=new char[strlen(s.str)-1];
- buff.str[0]=(char)strlen(s.str)-poz;
- strcpy(buff.str,s.str);
- for(int i =poz , j = poz; i < buff.str[0]; i++)
- if(i >= poz + n)
- {
- s.str[j] = buff.str[i]; j++;
- }
- return s;
- }
- bool TString::operator==(const TString &s)const// length compare є [==;>=]
- {
- return (this->str[0]==s.str[0]) ? true : false;
- }
- bool TString::operator!=(const TString &s)const
- {
- return (this->str[0]!=s.str[0]) ? true : false;
- }
- bool TString::operator<(const TString &s)const
- {
- return (this->str[0]<s.str[0]) ? true : false;
- }
- bool TString::operator>(const TString &s)const
- {
- return (this->str[0]>s.str[0]) ? true : false;
- }
- bool TString::operator<=(const TString &s)const
- {
- return (this->str[0]<=s.str[0]) ? true : false;
- }
- bool TString::operator>=(const TString &s)const
- {
- return (this->str[0]>=s.str[0]) ? true : false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement