Introducere
În limbajul de programare C++, tipul de date “șir de caractere” reprezintă o colecție de caractere consecutive, în care fiecare caracter este stocat într-o poziție de memorie. Acest tip de date este foarte util în programare, deoarece permite manipularea și prelucrarea textelor într-un mod eficient. În acest articol, vom explora definiția tipului de date “șir de caractere” în C++, vom discuta despre operațiile pe șiruri de caractere și vom prezenta câteva exemple de algoritmi.
Definiție
În C++, un șir de caractere este reprezentat ca un vector de caractere, în care ultimul element este un caracter special numit “caracterul nul” ( ). Acest caracter semnalează sfârșitul șirului și este utilizat pentru a indica că nu mai există alte caractere în șir.
De exemplu, pentru a declara și inițializa un șir de caractere în C++, putem utiliza următoarea sintaxă:
char nume_șir[] = "Exemplu";
În acest exemplu, variabila “nume_șir” este declarată ca un șir de caractere și este inițializată cu valoarea “Exemplu”. Lungimea șirului este determinată automat de compilator, în funcție de numărul de caractere din inițializare.
Operații pe șiruri de caractere
Există o serie de operații pe șiruri de caractere pe care le putem realiza în C++. Vom prezenta câteva dintre cele mai comune:
1. Concatenarea
Concatenarea reprezintă operația de a combina două sau mai multe șiruri de caractere într-un singur șir. În C++, putem realiza concatenarea utilizând operatorul de concatenare (+) sau funcția strcat().
// Utilizând operatorul de concatenare char s1[] = "Hello"; char s2[] = " World"; char rezultat[20]; strcpy(rezultat, s1); strcat(rezultat, s2); // rezultat va conține "Hello World"
2. Compararea
Compararea este operația de a verifica dacă două șiruri de caractere sunt egale sau nu. În C++, putem realiza compararea utilizând funcția strcmp(). Această funcție returnează 0 dacă cele două șiruri sunt identice.
char s1[] = "Hello"; char s2[] = "Hello"; if (strcmp(s1, s2) == 0) { // șirurile sunt identice }
3. Căutarea
Căutarea este operația de a găsi o anumită secvență de caractere într-un șir. În C++, putem realiza căutarea utilizând funcția strstr(). Această funcție returnează un pointer către prima apariție a secvenței căutate sau NULL dacă secvența nu a fost găsită.
char s1[] = "Hello World"; char *rezultat = strstr(s1, "World"); if (rezultat != NULL) { // secvența "World" a fost găsită în șirul s1 }
Exemple de algoritmi
În continuare, vom prezenta câteva exemple de algoritmi care implică manipularea șirurilor de caractere în C++:
1. Algoritmul de inversare a unui șir
Acest algoritm inversează ordinea caracterelor într-un șir de caractere. Putem realiza acest lucru utilizând două pointer-e, unul la începutul șirului și celălalt la sfârșitul acestuia. Schimbăm valorile la care se referă pointer-ele și apoi le deplasăm către mijlocul șirului până când se întâlnesc.
void inversareSir(char *s) { char *inceput = s; char *sfarsit = s + strlen(s) - 1; while (inceput < sfarsit) { char temp = *inceput; *inceput = *sfarsit; *sfarsit = temp; inceput++; sfarsit--; } }
2. Algoritmul de numărare a vocalelor într-un șir
Acest algoritm numără numărul de vocale dintr-un șir de caractere. Parcurgem fiecare caracter din șir și verificăm dacă acesta este o vocală.
int numarVocale(char *s) { int numar = 0; for (int i = 0; i < strlen(s); i++) { if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') { numar++; } } return numar; }
Concluzie
În acest articol, am discutat despre tipul de date “șir de caractere” în limbajul de programare C++. Am explorat definiția acestui tip de date, am prezentat câteva operații comune pe șiruri de caractere și am oferit exemple de algoritmi care implică manipularea șirurilor de caractere. Utilizarea corectă a acestor operații și algoritmii ne permite să lucrăm eficient cu textele în C++ și să rezolvăm diverse probleme legate de prelucrarea acestora.