Diferența dintre Array-ul caracterului și șirul

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 5 Mai 2024
Anonim
47 - STRINGS or CHARACTER ARRAYS - C PROGRAMMING
Video: 47 - STRINGS or CHARACTER ARRAYS - C PROGRAMMING

Conţinut


C ++ acceptă ambele, Matricea de caractere și șirul, deoarece C ++ are beneficii considerabile în utilizarea ambelor. Dar, incapacitatea de a opera pe tabloul de caractere crește dezvoltarea șirului de clase. Atât un șir de caractere cât și un șir conțin secvența de caractere. Dar diferența fundamentală între tabloul de caractere și șir este că „tabloul de caractere” nu poate fi operat cu operatori standard, în timp ce obiectele „șir” pot fi operate cu operatori standard. Să studiem celelalte diferențe între un șir de caractere și șir.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațieArray de caractereŞir
De bazăMatricea de caractere este o colecție de variabile, de tip de date de caractere.String este clasă și variabilele string sunt obiectul clasei "string".
Sintaxănume array_car;string string_name;
IndexareaUn personaj individual dintr-un tablou de caractere poate fi accesat prin indexul său în tablou.În șir, caracterul particular poate fi accesat prin funcția "string_name.charAt (index)".
Tip de dateUn tablou de caractere nu definește un tip de date.Un șir definește un tip de date în C ++.
operatoriiOperatorii din C ++ nu pot fi aplicați pe tabloul de caractere.Puteți aplica operatorul standard C ++ pe șir.
LimiteLimitele matriciale sunt depășite cu ușurință.Limitele nu vor depăși.
AccesAcces rapid.Acces lent.


Definiția Character Array


Un tablou de caractere este o colecție de variabile ale tipului de tip „char”; poate fi un tablou unidimensional sau un tablou bidimensional. Se mai numește „șir nul terminat”. Un tablou de caractere este o secvență de caractere care sunt stocate pe adrese consecutive de memorie. Într-un tablou de caractere, un anumit personaj poate fi accesat prin indexul său. Un „caracter nul” încheie tabloul de caractere ”.

Să luăm un exemplu de tablou de caractere: -

char nume = {A, j, a, y, 0}; sau char nume = "Ajay";

Aici, „char” este un tip de date de caractere, „nume” este un nume variabil al tabloului de caractere. Am arătat două modalități de inițializare a tabloului de caractere. În prima metodă, nulul este menționat explicit și în a doua metodă, compilatorul introduce automat nulul.

Sfârșitul șirului este întotdeauna un caracter nul; este caracterul terminant al tabloului de caractere. Un tablou de caractere nu este un tip de date încorporat; creăm tabloul de caractere declarându-l. Nu puteți aplica operatori standard pe un tablou de caractere. Pentru a opera pe tabloul de caractere există unele funcții încorporate, cum ar fi, (strlen (), strlwr (), strupr (), strcat ()). Deoarece operatorii standard nu pot fi aplicați la un tablou de caractere, nu pot lua parte la nicio expresie.


Pointerul de caractere către un tablou de caractere poate fi, de asemenea, creat.

Să o înțelegem cu un exemplu.

char s1 = "Bună ziua"; char s2 = "Domnule"; s1 = s1 + s2; // operatorii de eroare nu pot fi aplicați s2 = s1; // eroare Pointer caractere char * s = "Dimineața"; char * p; p = s; // Executa

În exemplul de mai sus, am declarat două tablouri de caractere s1, s2 și două indicatoare de caractere s și p. Matricea de caractere s1 și s2 sunt inițializate, putem vedea că nici operatorul de adăugare (+) și nici operatorul de alocare nu funcționează pe tabloul de caractere. Dar un pointer de caractere poate fi atribuit unui alt indicator de caractere.

Amintiți-vă odată inițializat tabloul de caractere, nu mai poate fi inițializat din nou către un alt set de caractere. Accesul la un tablou de caractere sau la un șir nul terminat 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 tip „șir”. Ca și în C ++, crearea unei clase este la fel ca și crearea unui „tip”. Clasa „șir” face parte din biblioteca C ++. Reține ansamblul de caractere sau tabloul de caractere în ansamblu. Există trei motive pentru dezvoltarea unei clase de șiruri standard.

  • Primul este „consecvență”, matricile de caractere nu sunt tipuri de date la propriu.
  • Al doilea este „comoditate”, nu puteți utiliza operatori standard pe un tablou de caractere.
  • Al treilea este „siguranță”, limitele matricei sunt depășite cu ușurință.

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

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

În declarația de mai sus, sunt declarate patru variabile de coardă 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 data declarației sale, așa cum o fac tipul de date obișnuit. Putem aplica operatorul standard la variabilele string.

s4 = s1; // alocarea unui obiect șir altor s4 = s1 + s2; // adăugarea a două șiruri și stocarea rezultatului în a treia șir dacă (s3> s2) // compararea a două șiruri s5 (s1); crearea unui nou obiect string folosind obiectul string existent

În codul de mai sus, diferiți operatori sunt aplicați pe un șir și sunt efectuate diferite operațiuni. Prima instrucțiune copiază un obiect șir pe alt obiect șir. În a doua afirmație, două șiruri sunt concatenate și stocate într-o a treia șir. În a treia afirmație, sunt comparate două șiruri. În cea de-a patra declarație, un nou obiect string este creat folosind obiectul string deja existent.

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

Diferențele cheie între Arrayul caracterelor și șirul

  1. Un tablou de caractere este o colecție de variabile care sunt de tipul de tip de caractere. String este o clasă care este instanțiată pentru a declara șiruri.
  2. Folosind valoarea indexului puteți accesa un personaj dintr-un tablou de caractere. Pe de altă parte, dacă doriți să accesați un anumit personaj dintr-un șir, îl puteți accesa după funcția string nume_ nume.charAt (index).
  3. Cum un tablou nu este un tip de date în mod similar, un caracter nu este, de asemenea, un tip de date. Pe de altă parte, String fiind un act de clasă ca un tip de referință, prin urmare, se poate spune că String este un tip de date.
  4. Nu puteți aplica niciun operator pe un tablou de caractere, în timp ce, puteți aplica operatori pe String.
  5. Fiind un tablou de caractere matrice are o lungime fixă ​​și limitele sale pot fi depășite cu ușurință. În cazul în care șirul nu are granițe.
  6. Elementele Array sunt stocate într-o locație de memorie contiguă, prin urmare, care pot fi accesate mai rapid decât variabila string.

Concluzie:

Incapacitatea de a opera pe tabloul de caractere a determinat dezvoltarea clasei de șiruri standard.