C++ Funcție șir: strcpy(), strcat(), strlen(), strcmp() Exemplu
Ce este un șir?
Un șir este o secvență de caractere. O C++ string este un obiect al clasei std::string. Caracterele sunt secvențe stocate de octeți cu acces la un singur octet de caracter permis.
C++ șirurile de caractere alocă memorie dinamic. Mai multă memorie poate fi alocată șirului în timpul rulării, dacă este necesar. Deoarece nu există nicio pre-alocare a memoriei, nicio pierdere de memorie. Putem efectua diverse operații pe șiruri, inclusiv comparații, 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 șir a fost introdus în limbaj de programare C. C++ continuă să o susțină. Este pur și simplu o matrice unidimensională de caractere terminată cu un caracter nul (\0). Un șir terminat cu caractere nul are caractere care alcătuiesc șirul, apoi urmate de un șir 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 care formează cuvântul Ioan. Cuvântul are 4 caractere, dar șirul are dimensiunea 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. The C++ compilatorul va plasa automat „\0” la sfârșitul șirului la inițializarea matricei.
std::string
Standardul C++ biblioteca furnizează clasa șir care acceptă diferite operații cu șir. Este scris ca std::string.
Pentru a folosi 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:
Explicația codului:
- 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 interiorul căreia 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:
Explicația codului:
- 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 interiorul căreia ar trebui adăugată logica programului. { marchează începutul corpului funcției main().
- Declararea unui șir și atribuirea acestuia numelui. Șirul 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 pentru aceasta. Aceste funcții sunt definite în clasa CString, prin urmare, trebuie să o includem în codul nostru pentru a folosi 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, șir1 și șir2, sunt șiruri. Funcția va copia șirul șir2 în șirul1.
strcat()
Aceasta este funcția de concatenare a șirurilor. Concatenează șiruri.
Sintaxă:
strcat(string1, string2);
Cei doi parametri ai funcției, șir1 și șir2 sunt șirurile care trebuie concatenate. Funcția de mai sus va concatena șirul șir2 la sfârșitul șirului șir1.
strlen()
Aceasta este funcția de lungime a șirului. Returnează lungimea șirului transmis ca argument.
Sintaxă:
strnlen(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 șir1 și șir2 sunt similare, mai puțin decât 0 dacă șirul1 sfoară 2.
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:
Explicația codului:
- Includerea fișierului antet iostream în codul nostru. Ne va permite să citim și să scriem pe consolă.
- Includerea clasei standard CString î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 interiorul căreia ar trebui adăugată logica programului. { marchează începutul corpului funcției main().
- Declararea unui șir de 10 caractere și dându-i numele nume1. Ș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.
- Imprimarea valorii șirului name1 alături de un text pe consolă. Ar trebui să imprime Guru99.
- Concatenarea șirurilor nume2 la sfârșitul șirului nume1. Valoarea numelui1 este acum Guru99John.
- Imprimarea valorii șirului name1 alături de un text pe consolă. Ar trebui să imprime Guru99John
- Determinarea lungimii șirului numit name1 și atribuirea valorii lungimii variabilei len.
- Imprimarea valorii variabilei len alături de alt text pe consolă.
- Funcția main() ar trebui să returneze o valoare dacă programul rulează bine.
- Sfârșitul corpului funcției main().
Rezumat
- Un șir este o succesiune de caractere.
- Șirurile aparțin clasei standard de șiruri în C++.
- Putem declara șiruri de caractere folosind șirul de caractere în stil C sau clasa de șiruri standard.
- Funcția strcpy() copiază un șir în altul.
- Funcția strcat() concatenează două șiruri de caractere.
- Funcția strlen() returnează lungimea unui șir.
- Funcția strcmp() compară două șiruri.