Priporočena, 2024

Izbira Urednika

Razlika med nizom znakov in nizom

C ++ podpira oba, Character array in string, saj ima C ++ precejšnje prednosti pri uporabi obeh. Toda nezmožnost delovanja na znakovnem nizu sproža razvoj niza razredov. Oba niza znakov in niza vsebujejo zaporedje znakov. Toda temeljna razlika med znakovnim nizom in nizom je ta, da »znakovnega niza« ni mogoče upravljati s standardnimi operaterji, medtem ko lahko »niz« predmete upravljamo s standardnimi operaterji. Preučimo druge razlike med nizom znakov in nizom.

Primerjalna tabela

Podlaga za primerjavoNiz znakovNiz
OsnovnoZnakovno polje je zbirka spremenljivk tipa podatkovnega znaka.Niz je razred in spremenljivke niza so predmet razreda "niz".
Sintaksachar array_name [velikost];string string_name;
IndeksiranjeDo posameznega znaka v nizu znakov lahko dostopate z indeksom v matriki.V nizu lahko posameznemu znaku dostopamo s funkcijo "string_name.charAt (index)".
Vrsta podatkovNiz znakov ne določa podatkovnega tipa.Niz določa podatkovni tip v C ++.
OperaterjiOperaterji v C ++ ne morejo biti uporabljeni na znakovnem nizu.Za niz lahko uporabite standardni C ++ operator.
MejaMeje nizov so preprosto prekoračene.Meje ne bodo prekoračene.
DostopHitri dostop.Počasen dostop.


Definicija matrike znakov

Niz znakov je zbirka spremenljivk tipa podatkov "char"; lahko je enodimenzionalno polje ali dvodimenzionalno polje. Imenuje se tudi »null terminated string«. Character array je zaporedje znakov, ki so shranjeni v zaporednih naslovih pomnilnika. V znakovnem nizu je mogoče dostopati do določenega znaka z indeksom. Znak »Null« zaključi niz znakov.

Vzemimo primer niza znakov: -

 char name [] = {'A', 'j', 'a', 'y', '0'}; ali char name [] = "Ajay"; 

Tukaj je “char” znakovni tip podatkov, “name” je ime spremenljivke niza znakov. Pokazal sem dva načina za inicializacijo niza znakov. V prvi metodi je null izrecno omenjen in v drugi metodi prevajalnik samodejno vstavi null.

Konec niza je vedno ničelni znak; je znak zaključnega znakovnega niza. Niz znakov ni vgrajen podatkovni tip; ustvarjamo znakovno polje tako, da ga razglasimo. Na niz znakov ne morete uporabiti standardnih operaterjev. Za delovanje na znakovnem nizu so vgrajene funkcije, kot so (strlen (), strlwr (), strupr (), strcat ()). Ker standardnih operaterjev ni mogoče uporabiti za niz znakov, ne morejo sodelovati v nobenem izrazu.

Prav tako lahko ustvarite kazalec znakov na niz znakov.

Razumimo ga z zgledom.

 char s1 [] = "Pozdravljeni"; char s2 [] = "Gospod"; s1 = s1 + s2; // operatorjev napak ni mogoče uporabiti s2 = s1; // napaka Znak kazalec char * s = "Jutro"; char * p; p = s; // izvaja 

V zgornjem primeru smo razglasili dva znakovna niza s1, s2 in dva znakovna kazalca s in p. Character array s1 in s2 sta inicializirana, vidimo, da niti operator dodatek (+) niti operater dodelitve ne delata na znakovnem nizu. Toda kazalec znakov se lahko dodeli drugemu znakovnemu kazalcu.

Zapomnite si, ko je niz znakov inicializiran, ga ne morete ponovno inicializirati na drug niz znakov. Dostop do niza znakov ali ničelnega niza je hiter v primerjavi z nizom v jeziku C ++.

Opredelitev niza

Niz ni vgrajen podatkovni tip C ++. To je predmet predmeta tipa “string”. Kot pri C + + je ustvarjanje razreda prav tako kot ustvarjanje tipa. Razred "string" je del knjižnice C ++. Vsebuje niz znakov ali nizov znakov kot celote. Obstajajo trije razlogi za razvoj standardnega razreda nizov.

  • Prvi je "doslednost", nizi znakov niso sami po sebi tipi podatkov.
  • Drugič je »priročno«, ne morete uporabljati standardnih operaterjev na znakovnem nizu.
  • Tretji je „varnost“, meje nizov so preprosto prekoračene.

Razumimo strune z zgledom.

 niz s1; s1 = "Pozdravljeni"; niz s2 ("dobro jutro"); niz s3 = "Hennery"; niz s4; 

V zgornji deklaraciji so deklarirane štiri spremenljivke niza ali objekti (s1, s2, s3, s4). V zgornji deklaraciji sem pokazal tri načine inicializacije niza. Niz s1 je deklariran in nato ločeno inicializiran. Niz s2 inicializira konstruktor razreda »String«. Niz s3 se inicializira v času njegove deklaracije kot običajni podatkovni tip. Standardni operater lahko uporabimo za nizovne spremenljivke.

 s4 = s1; // dodelitev enega niza objekta drugim s4 = s1 + s2; // dodajanje dveh nizov in shranjevanje rezultata v tretji niz, če (s3> s2) // primerjava dveh nizov strun s5 (s1); ustvarite nov predmet niza z obstoječim objektom niza 

V zgornjo kodo se na niz uporabljajo različni operaterji in izvajajo različne operacije. Prvi stavek kopira en predmet niza v drug predmet niza. V drugem stavku sta dva niza združena in shranjena v tretjem nizu. V tretjem stavku se primerjata dva niza. V četrtem stavku se ustvari nov predmet niza z že obstoječim predmetom niza.

Dostop do niza je počasen v primerjavi z nizom znakov ali nizom, ki je zaključen.

Ključne razlike med nizom znakov in nizom

  1. Niz znakov je zbirka spremenljivk, ki so tipa podatkovnega znaka. String je razred, ki je primeren za deklariranje nizov.
  2. Z vrednostjo indeksa lahko dostopate do znaka iz niza znakov. Po drugi strani pa, če želite dostopati do določenega znaka v nizu, lahko do njega dostopate s funkcijskim nizom ime_človek (indeks).
  3. Ker matrika ni podatkovni tip, tudi znak ni podatkovni tip. Po drugi strani pa je String razred, ki deluje kot referenčni tip, zato lahko rečemo, da je String podatkovni tip.
  4. Na znakovnem polju ne morete uporabiti nobenega operaterja, medtem ko lahko uporabite operaterje na nizu.
  5. Kot matrično matriko je določena dolžina in njene meje se lahko preprosto prekoračijo. Kjer niz nima omejitev.
  6. Elementi matrike so shranjeni v sosednji pomnilniški lokaciji, kar omogoča hitrejši dostop do spremenljivke niza.

Sklep:

Nezmožnost delovanja na znakovnem nizu je dvignila razvoj standardnega niza nizov.

Top