Recomandat, 2024

Alegerea Editorului

Diferența dintre matricea de caractere și coarda

C ++ suportă atât matricea de caractere, cât și șirul, deoarece C ++ are beneficii considerabile în utilizarea celor două. Dar, incapacitatea de a funcționa pe matricea de caractere ridică dezvoltarea șirului de clasă. Atât o matrice de caractere, cât și un șir de caractere conțin secvența de caractere. Dar diferența fundamentală dintre matricea de caractere și șirul este că "matricea de caractere" nu poate fi operată cu operatorii standard, în timp ce obiectele "șir" pot fi operate cu operatori standard. Să studiem celelalte diferențe dintre o matrice de caractere și un șir de caractere.

Diagramă de comparație

Bazele comparațieiArray de caractereŞir
De bazăMatricea de caractere este colecția de variabile, de tip de date caracter.Stringul este clasa și variabilele de șir sunt obiectul clasei "string".
Sintaxăcaracterul array_name [dimensiune];șir șir_name;
IndexareaUn caracter individual dintr-o matrice de caractere poate fi accesat prin indexul său în matrice.În șir, caracterul particular poate fi accesat de funcția "string_name.charAt (index)".
Tipul de dateO matrice de caractere nu definește un tip de date.Un șir definește un tip de date în C ++.
operatoriiOperatorii în C ++ nu pot fi aplicați pe matricea de caractere.Puteți aplica un operator C ++ standard pe șir.
LimiteLimitele array sunt ușor depășite.Frontierele nu vor depăși.
AccesAcces rapid.Accesul lent.


Definiția Character Array

O matrice de caractere este o colecție de variabile de tipul "char" datatype; poate fi o matrice unidimensională sau o matrice bidimensională. Se mai numește și "șir nul terminat". O matrice de caractere este o secvență a caracterelor stocate în adrese de memorie consecutive. Într-o matrice de caractere, un anumit caracter poate fi accesat prin indexul său. Un caracter "Null" termină matricea de caractere ".

Să luăm un exemplu de matrice de caractere:

 nume de caractere [] = {'A', 'j', 'a', 'y', '\ 0'}; sau nume de caractere [] = "Ajay"; 

Aici, "char" este un tip de date de caractere, "name" este un nume variabil al matricei de caractere. Am arătat două moduri de a inițializa matricea de caractere. În prima metodă, nulul este menționat explicit, iar în cea de-a doua metodă, compilatorul introduce automat nulul.

Sfârșitul șirului este întotdeauna un caracter nul; este caracterul terminator al matricei de caractere. O matrice de caractere nu este un tip de date încorporat; creăm matricea de caractere declarând-o. Nu puteți aplica operatori standard pe o matrice de caractere. Pentru a funcționa pe matricea de caractere există o funcție încorporată, cum ar fi, (strlen (), strlwr (), strupr (), strcat ()). Deoarece operatorii standard nu pot fi aplicați la o matrice de caractere, aceștia nu pot lua parte la nicio expresie.

Pointerul caracterului într-o matrice de caractere poate fi, de asemenea, creat.

Să înțelegem cu un exemplu.

 char s1 [] = "Bună ziua"; char s2 [] = "Sir"; s1 = s1 + s2; // operatorii de eroare nu pot fi aplicați s2 = s1; // eroare Caracterul pointer char * s = "Morning"; char * p; p = s; // Executa 

În exemplul de mai sus, am declarat două serii de caractere s1, s2 și două indicatoare de caractere s și p. Parametrii s1 și s2 sunt inițializați, putem observa că nici operatorul de plus (+), nici operatorul de atribuire nu lucrează pe matricea de caractere. Dar un pointer de caractere poate fi atribuit unui alt pointer de caractere.

Amintiți-vă o dată ce matricea de caractere este inițializată, aceasta nu poate fi inițializată din nou la alt set de caracter. Accesul la o matrice de caractere sau la un șir terminat null este rapid în comparație cu șirul din C ++.

Definiția String

Un șir nu este un tip de date încorporat de C ++. Este un obiect de clasă de tipul "șir". Ca și în C ++ crearea unei clase este la fel ca crearea unui "tip". Clasa "string" este o parte din biblioteca C ++. Acesta deține setul de caractere de caractere sau caracter ca un întreg. Există trei motive pentru dezvoltarea unei clase de șir standard.

  • Primul este "coerența", matricele de caractere nu sunt tipuri de date în sine.
  • În al doilea rând este "comoditate", nu puteți utiliza operatorii standard pe o matrice de caractere.
  • Al treilea este "siguranța", limitele matricei sunt ușor depășite.

Să înțelegem șirurile cu un exemplu.

 șir s1; s1 = "Bună ziua"; șir s2 ("Bună dimineața"); șir s3 = "Hennery"; șir s4; 

În declarația de mai sus, sunt declarate patru șir de variabile sau obiecte (s1, s2, s3, s4). În declarația de mai sus, am arătat trei moduri de inițializare a șirului. Șirul s1 este declarat și apoi inițializat separat. Șirul s2 este inițializat de constructorul clasei "String". Șirul s3 este inițializat la momentul declarației ca tip de date obișnuit. Putem aplica operatorul standard la variabilele de șir.

 s4 = s1; // atribuirea unui obiect șir altor s4 = s1 + s2; // adăugând două șir și stocând rezultatul în al treilea șir dacă (s3> s2) // comparând două șiruri de caractere s5 (s1); crearea unui obiect nou șir folosind obiectul șir 

În codul de mai sus, diferiți operatori sunt aplicați pe un șir și sunt executate diverse operații. Prima instrucțiune copiază un obiect șir la un alt obiect șir. În a doua declarație, două șiruri sunt concatenate și stocate într-un al treilea șir. În a treia instrucțiune, se compară două șiruri. În a patra instrucțiune, un nou obiect șir este creat folosind obiectul șir de caractere deja existent.

Accesul la șir este lent în comparație cu o matrice de caractere sau un șir terminat null.

Diferențele cheie între matricea de caractere și șir

  1. O matrice de caractere este o colecție de variabile care sunt de tip dat caracter. Stringul este o clasă care este instanțiată pentru a declara șiruri de caractere.
  2. Utilizând valoarea indexului puteți accesa un caracter dintr-o matrice de caractere. Pe de altă parte, dacă doriți să accesați un anumit caracter dintr-un șir, îl puteți accesa prin funcția string's_name.charAt (index).
  3. Deoarece un matrice nu este un tip de date similar, un caracter nu este, de asemenea, un tip de date. Pe de altă parte, String fiind un act de clasă ca tip de referință, se poate spune că String este un tip de date.
  4. Nu puteți aplica niciun operator pe o matrice de caractere, în timp ce puteți aplica operatorii pe String.
  5. Fiind o matrice matrice caracteristică are o lungime fixă ​​și limitele sale pot fi ușor depășite. Unde String nu are limite.
  6. Elementele array sunt stocate într-o locație de memorie contiguată, prin urmare, acestea pot fi accesate mai rapid decât variabilele de șir.

Concluzie:

Incapacitatea de a funcționa pe tabloul de caractere a determinat dezvoltarea unei clase standard de șir.

Top