C++ Funcție șir de caractere: strcpy(), strcat(), strlen(), strcmp()
⚡ Rezumat inteligent
C++ Funcțiile de șiruri de caractere precum strcpy, strcat, strlen și strcmp permit programelor să copieze, să unească, să măsoare și să compare text. Această resursă explică ce este un șir de caractere, cum se declară șiruri de caractere în stil C și std::string, cum se accesează valorile acestora și cum se aplică funcțiile de bază ale șirurilor de caractere cu exemple.

Ce este un șir?
Un șir este o secvență de caractere. O C++ `string` este un obiect al clasei `std::string`. Caracterele sunt stocate ca secvențe de octeți, fiind permis accesul la un singur octet de caracter.
C++ Șirurile de caractere alocă memoria dinamic. Mai multă memorie poate fi alocată șirului de caractere în timpul execuției, dacă este necesar. Deoarece nu există o pre-alocare a memoriei, nu există risipă de memorie. Putem efectua diverse operațiuni asupra șirurilor de caractere, inclusiv comparare, concatenare, conversie etc.
Declararea șirurilor
C++ acceptă două tipuri de declarații de șir:
- Șir de caractere în stil C
- Tipul clasei șir
Șir de caractere în stil C
Acest tip de declarație de șiruri de caractere a fost introdus în limbaj de programare C. C++ continuă să îl susțină. Este pur și simplu o matrice unidimensională de caractere terminată cu un caracter nul (\0). Un șir terminat cu nul are caracterele care alcătuiesc șirul, urmate de un caracter nul.
Luați în considerare declarația de șir de mai jos:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Declarația de mai sus creează un șir de caractere care formează cuvântul John. Cuvântul are 4 caractere, dar șirul de caractere are o dimensiune de 5. Spațiul suplimentar permite păstrarea caracterului nul.
Folosind regula de inițializare a matricei, putem scrie declarația de mai sus după cum urmează:
char name[] = "John";
Rețineți că nu trebuie să plasați caracterul nul la sfârșitul constantei șir de caractere. C++ compilatorul va plasa automat „\0” la sfârșitul șirului la inițializarea matricei.
std::string
Standardul C++ biblioteca oferă clasa string, care suportă diverse operații cu șiruri de caractere. Este scrisă ca std::string.
Pentru a utiliza această clasă, trebuie mai întâi să o includem în spațiul nostru de lucru folosind preprocesorul #include, așa cum se arată mai jos:
#include <string>
Apoi, putem declara șirul nostru folosind cuvântul cheie șir. De exemplu:
string name = "John";
Declarația de mai sus va crea un șir numit nume pentru a păstra valoarea John.
Accesarea valorilor șirului
In C++, putem accesa valorile șirului folosind numele șirului. De exemplu:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
ieșire:
Iată o captură de ecran a codului:
Code Explicaţie:
- Includerea fișierului antet iostream în codul nostru. Ne va permite să citim și să scriem pe consolă.
- Includerea spațiului de nume std pentru a-și folosi clasele și funcțiile fără a-l apela.
- Apelarea funcției main() în care ar trebui adăugată logica programului. { marchează începutul corpului funcției main().
- Declararea unui șir de caractere și atribuirea numelui. Șirul va stoca valoarea John. Spațiul suplimentar va stoca caracterul nul.
- Imprimarea unui text pe consolă.
- Imprimarea valorii șirului numit nume pe consolă.
- Funcția main() ar trebui să returneze o valoare dacă programul rulează bine.
- Sfârșitul corpului funcției main().
Iată un alt exemplu folosind C++ clasa standard de șiruri:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
ieșire:
Iată o captură de ecran a codului:
Code Explicaţie:
- Includerea fișierului antet iostream în codul nostru. Ne va permite să citim și să scriem pe consolă.
- Includerea clasei de șir standard în codul nostru.
- Includerea spațiului de nume std pentru a-și folosi clasele și funcțiile fără a-l apela.
- Apelarea funcției main() în care ar trebui adăugată logica programului. { marchează începutul corpului funcției main().
- Declararea unui șir de caractere și atribuirea numelui name. Șirul de caractere va stoca valoarea Guru99.
- Imprimarea valorii numelui șirului alături de un text pe consolă.
- Funcția main() ar trebui să returneze o valoare dacă programul rulează bine.
- Sfârșitul corpului funcției main().
Funcții șir în C++
Veți dori adesea să manipulați șiruri. C++ oferă o gamă largă de funcții pe care le puteți utiliza în acest scop. Aceste funcții sunt definite în antet, așa că trebuie să îl includem în codul nostru pentru a putea utiliza funcțiile. Să discutăm câteva:
strcpy()
Aceasta este funcția de copiere a șirurilor. Copiază un șir în altul.
Sintaxă:
strcpy(string1, string2);
Cei doi parametri ai funcției, string1 și string2, sunt șiruri de caractere. Funcția va copia șirul string2 în string1.
strcat()
Aceasta este funcția de concatenare a șirurilor. Concatenează șiruri.
Sintaxă:
strcat(string1, string2);
Cei doi parametri ai funcției, string1 și string2, reprezintă șirurile de caractere care vor fi concatenate. Funcția de mai sus va concatena șirul string2 până la sfârșitul șirului string1.
strlen()
Aceasta este funcția de lungime a șirului. Returnează lungimea șirului transmis ca argument.
Sintaxă:
strlen(string1);
Parametrul șir1 este numele șirului a cărui lungime urmează să fie determinată. Funcția de mai sus va returna lungimea șirului șir1.
strcmp()
Aceasta este funcția de comparare a șirurilor. Este folosit pentru compararea șirurilor.
Sintaxă:
strcmp(string1, string2);
Funcția de mai sus va returna 0 dacă șirurile string1 și string2 sunt similare, mai mic decât 0 dacă string1 < string2 și mai mare decât 0 dacă string1 > string2.
Exemplu:
Următorul exemplu demonstrează cum să utilizați funcțiile șir de mai sus:
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
ieșire:
Iată o captură de ecran a codului:
Code Explicaţie:
- Includerea fișierului antet iostream în codul nostru. Ne va permite să citim și să scriem pe consolă.
- Inclusiv standardul antet în codul nostru.
- Includerea spațiului de nume std pentru a-și folosi clasele și funcțiile fără a-l apela.
- Apelarea funcției main() în care ar trebui adăugată logica programului. { marchează începutul corpului funcției main().
- Declararea unui șir de caractere de 10 caractere și atribuirea acestuia numele name1. Șirul va stoca valoarea Guru99.
- Declararea unui șir de 10 caractere și dându-i numele nume2. Șirul va stoca valoarea John.
- Declararea unui șir de 10 caractere și dându-i numele nume3.
- Declararea unui variabilă întreagă numit len.
- Copierea șirului name1 în șirul name3.
- Afișează valoarea șirului name3 alături de un text în consolă. Ar trebui să afișeze Guru99.
- Concatenarea șirului name2 la sfârșitul șirului name1. Valoarea lui name1 este acum Guru99Ioan.
- Afișează valoarea șirului name1 alături de un text în consolă. Ar trebui să afișeze Guru99Ioan.
- Determinarea lungimii șirului de caractere numit name1 și atribuirea valorii lungimii variabilei len.
- Afișarea valorii variabilei len alături de alt text în consolă.
- Funcția main() ar trebui să returneze o valoare dacă programul rulează bine.
- Sfârșitul corpului funcției main().




