Declarare
În C++ (stil BAC), un șir de caractere este un vector de tip char terminat cu caracterul nul '\0':
#include <iostream>
using namespace std;
int main() {
char s[101];
cin.getline(s, 101);
cout << s;
return 0;
}Atenție: Citirea cu cin si operatorul de extragere se opreste la primul spatiu, deci ar lua doar primul cuvant. Pentru tot randul se foloseste getline.
cin >> s citește până la primul spațiu; cin.getline citește toată linia, cu spații.
Funcțiile din <cstring>
| Funcție | Efect |
|---|---|
strlen(s) | lungimea (fără '\0') |
strcpy(d, s) | copiază s în d |
strcat(d, s) | lipește s la finalul lui d |
strcmp(a, b) | 0 dacă egale; negativ dacă a înaintea lui b lexicografic |
strchr(s, c) | adresa primei apariții a caracterului c |
Exemplu: pentru s = "BAC", strlen(s) este 3.
Prelucrări clasice
Numărarea vocalelor:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[101], voc[] = "aeiouAEIOU";
int nr = 0;
cin.getline(s, 101);
for (int i = 0; i < (int)strlen(s); i++)
if (strchr(voc, s[i]) != 0) nr++;
cout << nr;
return 0;
}Atenție: Apartenenta la o multime de caractere se scrie altfel peste tot: strchr in C si C++, pos in Pascal, operatorul in la Python.
Pentru intrarea bacalaureat, programul afișează 6 (a, a, a, u, e, a).
Transformare literă mică în mare: s[i] = s[i] - 'a' + 'A' pentru caractere din intervalul 'a'...'z'.
Greșeli frecvente
- Compararea șirurilor cu
==compară adrese, nu conținut: foloseștestrcmp. cin >> sse oprește la spațiu: pentru propoziții foloseștecin.getline.- Vectorul trebuie dimensionat cu un loc în plus pentru
'\0'.