Razlika med nizom znakov in nizom

Avtor: Laura McKinney
Datum Ustvarjanja: 1 April 2021
Datum Posodobitve: 6 Maj 2024
Anonim
Основные ошибки при возведении перегородок из газобетона #5
Video.: Основные ошибки при возведении перегородок из газобетона #5

Vsebina


C ++ podpira oboje, Niz znakov in niz, saj ima C ++ velike koristi pri uporabi obeh. Toda nezmožnost delovanja na nizu znakov sproži razvoj niza razreda. Niz znakov in niz vsebujeta zaporedje znakov. Temeljna razlika med nizom znakov in nizom je, da z "znakovno matriko" ni mogoče upravljati s standardnimi operaterji, medtem ko lahko z "nizkimi" predmeti upravljamo s standardnimi operaterji. Preučimo druge razlike med nizom znakov in nizom.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoNiz znakovString
OsnovniNiz znakov je zbirka spremenljivk, vrst znakov.String je razred, spremenljivke niza pa predmet razreda "string".
Sintaksaime matrike char;string string_ime;
IndeksiranjePosamezen znak v nizu znakov lahko dostopa s svojim indeksom v matriki.V nizu lahko do določenega znaka dostopa funkcija "string_name.charAt (index)".
Vrsta podatkovNiz znakov ne definira vrste podatkov.Niz definira vrsto podatkov v C ++.
OperaterjiOperaterjev v C ++ ni mogoče uporabiti za niz znakov.V vrvico lahko uporabite standardnega operaterja C ++.
MejaMeje matrike se zlahka prekoračijo.Meje ne bodo prekoračene.
DostopHiter dostop.Počasen dostop.


Opredelitev nizov znakov


Niz znakov je zbirka spremenljivk podatkov tipa "char"; lahko je enodimenzionalni niz ali dvodimenzionalni niz. Imenujemo ga tudi "ničelno končan niz". Niz znakov je zaporedje znakov, ki so shranjeni v zaporednih naslovih pomnilnika. V nizu znakov lahko določen znak dostopa s svojim indeksom. "Ničelni znak" zaključi niz znakov ".

Vzemimo primer matrike znakov: -

ime char = {A, j, a, y, 0}; ali char ime = "Ajay";

Tu je "char" vrsta podatkovnih znakov, "name" je spremenljivo ime matrike znakov. Pokazala sem dva načina za inicializacijo matrike znakov. V prvi metodi je null izrecno omenjen, v drugi metodi pa prevajalnik samodejno vstavi null.

Konec niza je vedno ničelni znak; je zaključni značaj matrike znakov. Niz znakov ni vgrajena vrsta podatkov; ustvarimo niz znakov, tako da ga izjavimo. V nizu znakov ne morete uporabiti standardnih operaterjev. Za delovanje z nizom znakov je nekaj vgrajene funkcije, kot so (strlen (), strlwr (), strupr (), strcat ()). Ker standardnih operaterjev ni mogoče uporabiti za niz znakov, ne morejo sodelovati v nobenem izrazu.


Ustvari se lahko tudi kazalec znakov za niz znakov.

Razložimo ga s primerom.

char s1 = "Pozdravljeni"; char s2 = "Gospod"; s1 = s1 + s2; // operaterjev napak ni mogoče uporabiti s2 = s1; // napaka Kazalnik kazalca char * s = "Jutro"; char * p; p = s; // izvrši

V zgornjem primeru smo razglasili dva znakovna niza s1, s2 in dva znakovna kazalca s in p. Znak znakov s1 in s2 sta inicializirana, vidimo, da niti niz operaterja (+) niti operater dodeljevanja ne delujeta na nizu znakov. Toda znakovni kazalec lahko dodelimo drugemu kazalcu znakov.

Ne pozabite, da ko je niz znakov inicializiran, ga ni mogoče ponovno inicializirati z drugim nizom znakov. Dostop do nizov znakov ali ničelno končanega niza je hiter v primerjavi z nizom v C ++.

Opredelitev niza

Niz ni vgrajena podatkovna vrsta C ++. To je predmet razreda tipa "string". Tako kot pri C ++ je ustvarjanje razreda podobno kot ustvarjanje tipa. Razred "string" je del knjižnice C ++. Vsebuje nabor znakov ali nizov znakov kot celote. Za razvoj standardnega niza razreda obstajajo trije razlogi.

  • Najprej je "doslednost", nizi znakov sami po sebi niso podatkovni tipi.
  • Drugič je "udobje", ne morete uporabljati standardnih operaterjev v polju znakov.
  • Tretjič je "varnost", meje matrike se zlahka prekoračijo.

Razumejmo si strune s primerom.

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

V zgornji deklaraciji so deklarirane štiri spremenljivke niza ali predmeti (s1, s2, s3, s4). V zgornji deklaraciji sem prikazal tri načine inicializacije niza. Niz s1 je razglašen in nato ločeno inicializiran. Niz s2 inicializira konstruktor razreda “String”. Niz s3 se inicializira ob deklaraciji kot običajno tip podatkov. Standardne operaterje lahko uporabimo za nizijske spremenljivke.

s4 = s1; // dodelitev enega niza predmeta drugemu s4 = s1 + s2; // dodajanje dveh nizov in shranjevanje rezultata v tretji niz, če (s3> s2) // primerjava dveh nizov nizov s5 (s1); ustvari nov niz z uporabo obstoječega niza

V zgornji kodi se na niz vrtijo različni operaterji in izvajajo se različne operacije. Prva stavka kopira en niz v drug niz z nizom. V drugem stavku sta dva niza združena in shranjena v tretjem nizu. V tretji izjavi se primerjata dva niza. V četrtem stavku se ustvari nov niz z uporabo že obstoječega niza.

Dostop do niza je počasen v primerjavi z nizom znakov ali ničelno končanim nizom.

Ključne razlike med nizom znakov in nizom

  1. Niz znakov je zbirka spremenljivk, ki so iz podatkovnega tipa znakov. String je razred, ki je namenjen razglasitvi strun.
  2. S pomočjo indeksne vrednosti lahko do znaka dostopate iz nizov znakov. Po drugi strani pa, če želite dostopati do določenega znaka v nizu, lahko do njega dostopate po funkcijskem nizu_name.charAt (indeks).
  3. Ker matrika ni podatkovna vrsta, tako tudi znak ni podatkovni tip. Po drugi strani pa je, da je string v razredu referenčni tip, zato lahko rečemo, da je String podatkovni tip.
  4. V znakovnem nizu ne morete uporabiti nobenega operaterja, operaterje pa lahko uporabite v Stringu.
  5. Ker je matrika znakov matrike fiksna dolžina in je mogoče omejiti njene meje. Kjer String nima nobenih meja.
  6. Elementi matrike so shranjeni v neprekinjenem pomnilniškem mestu, zato je dostop do njih hitrejši od spremenljivke niza.

Zaključek:

Nezmožnost delovanja na nizu znakov je povzročila razvoj standardnega niza razreda.