Preporučeno, 2024

Izbor Urednika

Razlika između niza znakova i niza

C ++ podržava oba, Character array i string, jer C ++ ima značajne prednosti u korištenju oba. No, nemogućnost rada na nizu znakova podiže razvoj klasnog niza. I niz znakova i niz sadrže niz znakova. Međutim, temeljna razlika između niza znakova i niza je da se "niz znakova" ne može upravljati sa standardnim operatorima, dok se "string" objekti mogu upravljati sa standardnim operatorima. Proučimo ostale razlike između niza znakova i niza.

Tablica usporedbe

Osnova za usporedbuNiz znakovaNiz
Osnovni, temeljniNiz znakova je skup varijabli tipa podatkovnog znaka.String je klasa i varijable stringa su objekt klase "string".
Sintaksachar array_name [veličina];string string_name;
indeksiranjeIndividualnom znaku u nizu znakova može se pristupiti njegovim indeksom u nizu.U nizu se pojedinom karakteru može pristupiti funkcija "string_name.charAt (index)".
Tip podatakaNiz znakova ne definira tip podataka.Niz definira tip podataka u C ++.
operatoriOperatori u C ++ ne mogu se primijeniti na niz znakova.Na string možete primijeniti standardni C ++ operator.
GranicaGranice polja lako se prekoračuju.Granice se neće prekoračiti.
PristupBrz pristup.Spori pristup.


Definicija niza znakova

Niz znakova je skup varijabli tipa "char"; može biti jednodimenzionalno polje ili dvodimenzionalni niz. Također se naziva "null terminated string". Niz znakova je niz znakova pohranjenih u uzastopne memorijske adrese. U nizu znakova određenom se znaku može pristupiti njegovim indeksom. "Null znak" završava niz znakova ".

Uzmimo primjer niza znakova: -

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

Ovdje, "char" je znakovni tip podataka, "name" je ime varijable niza znakova. Pokazao sam dva načina inicijalizacije niza znakova. U prvoj metodi, null se eksplicitno spominje i u drugoj metodi kompilator automatski ubacuje null.

Kraj niza je uvijek nulti znak; to je znak završetka niza znakova. Niz znakova nije ugrađeni tip podataka; stvaramo niz znakova tako da ga deklariramo. Ne možete primijeniti standardne operatore na niz znakova. Za rad s nizom znakova postoje neke ugrađene funkcije kao što su, (strlen (), strlwr (), strupr (), strcat ()). Budući da se standardni operatori ne mogu primijeniti na niz znakova, oni ne mogu sudjelovati u bilo kojem izrazu.

Može se izraditi i pokazivač znakova na niz znakova.

Razumimo to s primjerom.

 char s1 [] = "Pozdrav"; char s2 [] = "Gospodine"; s1 = s1 + s2; // operatori pogrešaka ne mogu se primijeniti s2 = s1; // error Character pointer char * s = "Jutro"; char * p; p = a; // izvršava 

U gornjem primjeru, deklarirali smo niz znakova s1, s2 i dva znaka s i p. Niz znakova s1 i s2 se inicijaliziraju, vidimo da ni operator zbroja (+) niti operator dodjeljivanja ne rade na nizu znakova. No, pokazivač znakova može se dodijeliti drugom pokazivaču znakova.

Zapamtite kada je niz znakova inicijaliziran, ne može se ponovno inicijalizirati na drugi skup znakova. Pristup nizu znakova ili null završenom nizu je brz u odnosu na niz u C ++.

Definicija niza

Niz nije ugrađeni tip podataka C ++. To je objekt klase tipa “string”. Kao u C ++ kreiranje klase je isto kao i stvaranje tipa. Klasa "string" je dio C ++ biblioteke. Ona sadrži skup znakova ili niz znakova u cjelini. Postoje tri razloga za razvoj standardne klase nizova.

  • Prvo je "dosljednost", znakovni nizovi nisu sami tipovi podataka.
  • Drugo je “praktičnost”, ne možete koristiti standardne operatore na nizu znakova.
  • Treće je “sigurnost”, granice nizova lako se prekoračuju.

Razmotrimo nizove s primjerom.

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

U gore navedenoj deklaraciji deklarirane su četiri varijable niza ili objekti (s1, s2, s3, s4). U gornjoj deklaraciji, pokazao sam tri načina inicijalizacije niza. Niz s1 se deklarira i zatim zasebno inicijalizira. Niz s2 inicijalizira konstruktor klase "String". Niz s3 se inicijalizira u vrijeme njegove deklaracije kao normalni tip podataka. Možemo primijeniti standardni operator na string varijable.

 s4 = s1; / dodjeljivanje jednog objekta nizu drugim s4 = s1 + s2; // dodavanje dva niza i pohranjivanje rezultata u treći string ako (s3> s2) // uspoređuje dva niza nizova s5 (s1); stvaranje novog niza objekta pomoću postojećeg niza objekta 

U gornjem kodu, različiti operatori se primjenjuju na niz i izvode se različite operacije. Prva izjava kopira jedan string objekt na drugi string objekt. U drugom se izrazu dva niza spajaju i pohranjuju u treći niz. U trećoj se tvrdnji uspoređuju dva niza. U četvrtom izrazu stvara se novi objekt stringa pomoću već postojećeg niza objekta.

Pristup nizu je spor u usporedbi s nizom znakova ili null završenim nizom.

Ključne razlike između niza znakova i niza

  1. Niz znakova je skup varijabli tipova podataka. String je klasa koja se instalira za deklariranje nizova.
  2. Pomoću vrijednosti indeksa možete pristupiti znaku iz niza znakova. S druge strane, ako želite pristupiti određenom znaku u nizu, možete mu pristupiti pomoću funkcije string's_name.charAt (index).
  3. Budući da niz nije tip podataka, znak također nije tip podataka. S druge strane, String kao klasa djeluje kao referentni tip, stoga se može reći da je String tip podataka.
  4. Ne možete primijeniti nijedan operator na niz znakova, dok operatore možete primijeniti na niz.
  5. Budući da je niz nizova znakova fiksne duljine, a njegove se granice mogu lako prekoračiti. Gdje niz nema granica.
  6. Elementi polja se pohranjuju u susjedno mjesto memorije pa im se može pristupiti brže od string varijable.

Zaključak:

Nemogućnost rada na nizu znakova podigla je razvoj standardne klase nizova.

Top