Operatii cu siruri tip C++
Limbajul C++ defineste clasa string pentru operatii cu siruri. Definitia acestei clase se afla in biblioteca header <string> (nu <string.h>!!!).
Clasa are urmatorii constructori:
string();
string(const string&);
string(const char *);
Clasa string defineste urmatoarele functii membre
int find(char * substring);
da indicele primei aparitii a sirului substring in sirul respectiv. Daca sirul substring nu exista in sir functia are ca rezultat lungimea sirului.
void erase(int index, int size)
Functia sterge "size" caractere incepand cu caracterul cu indicele index.
replace(int index, int size, char * sir);
replace(int index, int size, string sir);
si inlocuieste subsirul de lungime size ce incepe cu caracterul index cu subsirul sir.
substr(int index, int size);
creaza un sir tip string din subsirul de lungime size ce incepe cu caracterul index al sirului initial
Clasa defineste urmatorii operatori
operatorul de selectie [] ce poate selecta un caracter din sir sau atribui o valoare unui caracter din sir. Trebuie tinut cont de faptul ca indicele primului character din sir este zero.
Mentionam ca citirea unui sir de caractere de la tastatura intr-un sir tip string se poate face cu operatorul de citire >>. Sirul citit se termina la primul spatiu intalnit sau la intalnirea caracterului 'n'. O functie utila a obiectului cin pentru citirea de caractere este getline cu prototipurile
getline(sir_c, size, car) ;
care citeste in sirul tip C sir_c cel mult size caractere sau pana la intalnirea caracterului car.
getline(cin, str, car);
care citeste in sirul tip string str pana la intalnirea caracterului car.
In rezolvarea problemelor urmatoare vom utiliza spatii de nume. Directiva using namespace asociaza un spatiu de nume cu un anumit nivel al programului, astfel incat obiectele si functiile din acel spatiu sunt accesibile direct ca si cand ar fi fost definite ca globale. Aceasta directiva are forma
using namespace identificator;
Toate clasele, obiectele si functiile din bibliotecile C++ standard sunt definite in spatiul std. La utilizarea cu spatii de nume se utilizeaza bibliotecile paralele ale limbajului C++, fara extensia h.
Probleme rezolvate
Problema 1. Sa se construiasca un program care citeste un sir de caractere de la tastatura intr-un sir tip C++ si afiseaza lungimea lui.
Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Problema 2. Se da sirul "aDeRUyt". Sa se converteasca literele mici in litere mari.
Indicatie.Se va utiliza functia standard int toupper(char) din bibliotecile <cctype> sau <cstdlib>. Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
#include<cctype>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Problema 3. Se da sirul "xyz2j7M=*&^". Sa se inlocuiasca primele doua caractere din sir cu primele doua caractere din sirul "abc". Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
#include<cctype>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Problema 4. Sa se compare sirurile
"abcxd" si "abdf89k".
"xyz" si adk"
"mnp" si "mnp"
Se va explica de fiecare data rezultatul. Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Problema 5. Sa se concateneze sirurile "abc", "x**2" si "x-y$zk". Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Problema 6. Fie un sir de caractere citit de la tastatura. Sa se verifice daca in sirul citit exista subsirul "abc". Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Problema 7. Sa se scrie o functie care citeste un sir de caractere de la tastatura, sterge primul caracter din sir si apoi afiseaza pe ecran sirul rezultat. Programul ce rezolva problema este urmatorul.
#include<string>
#include<iostream>
using namespace std;
void main()
Rezultatele rularii programului sunt cele de mai jos.
Probleme propuse
Problema Se da sirul "xyz2j7M=*&^". Sa se inlocuiasca primele doua caractere din sirul dat cu ultimele doua caractere din sirul "abc" .
Problema Sa se compare sirurile
"abcxd" si "abdf89k".
"xyz" si adk"
"mnp" si "mnp"
Se va explica de fiecare data rezultatul. Se vor utiliza operatorii de comparare <, > si = =.
Problema Sa se construiasca o functie care sa transforme literele mici dintr-un sir in litere mari. Prototipul functiei va fi
void strcnv(string& x);
Problema Sa se construiasca o functie care sa transforme componentele pare ale unui sir tip string in spatii. Prototipul functiei va fi
void strcnv(string& x);
Problema Sa se citeasca un sir de la tastatura. Sa se afiseze sirul citit si sirul in ordine inversa.
|