// proiect1.cpp : Defines the entry point for the console application. // #include #include #include #include #include #include class String { char *psir; int lg; void setString(char *s) { psir=new char[strlen(s)+1]; strcpy(psir,s); lg=strlen(s); } public: //constructor de clasa String(char *s1="") { setString(s1); } //copy constructor String(String &s2) { setString(s2.psir); } //destructor ~String() { delete [] psir;} static char* abrevieri[]; static char* neabrev[]; int operator!(); friend String operator+(String &, String &); friend String operator+(String &, char); friend String operator+(String &, char *); friend String operator+(char *, String &); String &operator+=(char); String &operator+=(char *); char &operator[](int); int operator==(String &); int operator!=(String &); int operator>(String &); int operator<(String &); int operator>=(String &); int operator<=(String &); char *abrev(); //iesire de pe fisier standard pe disc friend ostream &operator<<(ostream &out, String &s) { out<>(istream &in, String &s) { cout<<"\n Sirul:"; in>>s.psir; return in; } //iesire de pe disc in fisier friend ofstream &operator<<(ofstream &fout, String &s) { fout<>(ifstream &fin, String &s) { char aux[50]; fin>>aux; s.lg=strlen(aux); delete s.psir; s.psir=new char [s.lg+1]; strcpy(s.psir,aux); return fin; } //operatorul cast operator char() { return *psir;} String &operator=(String&); }; //test sir vid int String::operator!() { if(lg==0) return 0; else return 1; } //concatenarea a doua siruri String operator+(String &s1, String &s2) { String aux; aux.lg=s1.lg+s2.lg; aux.psir=new char[aux.lg+1]; strcpy(aux.psir,s1.psir); strcat(aux.psir,s2.psir); return aux; } //concatenarea unui sir cu un caracter String operator+(String &s1, char c) { String aux; aux.lg=s1.lg+1; aux.psir=new char[aux.lg+1]; strcpy(aux.psir,s1.psir); aux.psir[aux.lg-1]=c; aux.psir[aux.lg]='\0'; return aux; } //concatenarea unui sir cu char[] String operator+(String &s1, char *sirc) { String aux; aux.lg=s1.lg+strlen(sirc); aux.psir=new char[aux.lg+1]; strcpy(aux.psir,s1.psir); strcat(aux.psir,sirc); return aux; } //concatenarea unui char[] cu un sir String operator+(char *sirc, String &s1) { String aux; aux.lg=strlen(sirc)+s1.lg; aux.psir=new char[aux.lg+1]; strcpy(aux.psir,sirc); strcat(aux.psir,s1.psir); return aux; } //concatenarea unui sir existent cu un char String &String::operator+=(char c) { char *aux; aux=new char[lg+1]; strcpy(aux,psir); lg++; delete psir; psir=new char[lg+1]; psir=strcpy(psir,aux); psir[lg-1]=c; psir[lg]='\0'; delete aux; return (*this); } //concatenarea unui sir existent cu char[] String &String::operator+=(char *sirc) { char *aux; lg=lg+strlen(sirc); aux=new char[lg+1]; strcpy(aux,psir); strcat(aux,sirc); delete psir; psir=new char[lg+1]; psir=strcpy(psir,aux); delete aux; return (*this); } //extragere caracter char &String::operator[](int poz) { poz--; if(poz(String &s1) { return (strcmp(psir,s1.psir)>0); } int String::operator<(String &s1) { return (strcmp(psir,s1.psir)<0); } int String::operator>=(String &s1) { return (strcmp(psir,s1.psir)>=0); } int String::operator<=(String &s1) { return (strcmp(psir,s1.psir)<=0); } //atribuire String &String::operator=(String &sir) { if(&sir!=this) { delete [] psir; lg=sir.lg; setString(sir.psir); } return *this; } char *String::abrevieri[16]={"abs","etc","pt","urm","info","adv","adj","reg","rom","fr","lat","bl","tel","str","jud","cca"}; char *String::neabrev[16]={"modul","etcetera","pentru","urmator","informatie","adverb","adjectiv","regiune","roman","francez","latin","bloc","telefon","strada","judet","circa"}; char *String::abrev() { int i=0,gasit=0; while(i<16) { if(strcmp(psir,neabrev[i])==0) return abrevieri[i]; else i++; } return psir; } void main() { int raspuns; do { system("cls"); cout<<"\nS-a folosit 1 pentru fals si 0 pentru adevarat!"; String sir1("alfabet"), sir2("etcetera"), sir4, sir5, sir; char sir3='a'; cout<<"\n sir1:"<>c; char d; cout<<"\nCaracterul introdus de la tastatura:"; cin>>d; int poz; //test sir vid cout<<"\n Sirul 1 este vid?"<<"\t"<>poz; cout<<"\nCaracterul de pe pozitia data din sir1 este:"<>poz; cout<<"\nCaracterul de pe pozitia data din sir1 este:"<>sir2; cout<<"\nCitire din fisier:"<>raspuns; } while(raspuns==1); }