Rakstzīmju masīva un virknes atšķirība

Autors: Laura McKinney
Radīšanas Datums: 1 Aprīlis 2021
Atjaunināšanas Datums: 5 Maijs 2024
Anonim
ASCII and Unicode Character Sets
Video: ASCII and Unicode Character Sets

Saturs


C ++ atbalsta abus, Rakstzīmju masīvs un virkne, jo abiem C ++ ir ievērojamas priekšrocības. Bet nespēja darboties ar rakstzīmju masīvu paaugstina klases virknes attīstību. Gan rakstzīmju masīvs, gan virkne satur rakstzīmju secību. Bet galvenā atšķirība starp rakstzīmju masīvu un virkni ir tāda, ka “rakstzīmju masīvu” nevar darbināt ar standarta operatoriem, savukārt “virknes” objektus var darbināt ar standarta operatoriem. Pētīsim citas atšķirības starp rakstzīmju masīvu un virkni.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsRakstzīmju masīvsStīgu
PamataRakstzīmju masīvs ir mainīgo lielumu kolekcija, rakstzīmju datu tips.Virkne ir klase, un virknes mainīgie ir klases "virkne" objekts.
Sintaksechar masīvs_vārds;stīgu virknes nosaukums;
IndeksēšanaIndividuālai personāžai rakstzīmju masīvā var piekļūt pēc masīva indeksa.Virknē konkrētajai rakstzīmei var piekļūt, izmantojot funkciju "string_name.charAt (index)".
Datu tipsRakstzīmju masīvs nenosaka datu tipu.Virkne nosaka datu tipu C ++.
OperatoriC ++ operatorus nevar izmantot rakstzīmju masīvā.Jūs varat virknei izmantot standarta C ++ operatoru.
RobežaMasīva robežas tiek viegli pārsniegtas.Robežas netiks pārsniegtas.
PiekļuveĀtra pieeja.Lēna piekļūšana.


Rakstzīmju masīva definīcija


Rakstzīmju masīvs ir “char” datu veida mainīgo lielumu kolekcija; tas var būt viendimensiju masīvs vai divdimensiju masīvs. To sauc arī par “nulles izbeigtu virkni”. Rakstzīmju masīvs ir rakstzīmju secība, kas tiek saglabāta secīgās atmiņas adresēs. Rakstzīmju masīvā konkrētajam personāžam var piekļūt, izmantojot tā indeksu. “Null character” izbeidz rakstzīmju masīvu ”.

Ņemsim piemēru par rakstzīmju masīvu: -

char name = {A, j, a, y, 0}; vai char name = "Ajay";

Šeit “char” ir rakstzīmju datu tips, “name” ir rakstzīmju masīva mainīgs nosaukums. Man bija parādīti divi veidi, kā inicializēt rakstzīmju masīvu. Pirmajā metodē nulle tiek skaidri pieminēta, bet otrajā metodē kompilators automātiski ievieto nulli.

Virknes galā vienmēr ir nulles raksturs; tas ir rakstzīmju masīva beigušais raksturs. Rakstzīmju masīvs nav iebūvēts datu tips; mēs veidojam rakstzīmju masīvu, to deklarējot. Rakstzīmju masīvā nevar izmantot standarta operatorus. Lai darbotos ar rakstzīmju masīvu, ir dažas iebūvētas funkcijas, piemēram, (strlen (), strlwr (), strupr (), strcat ()). Tā kā standarta operatorus nevar izmantot rakstzīmju masīvam, viņi nevar piedalīties nevienā izteiksmē.


Var izveidot arī rakstzīmju rādītāju uz rakstzīmju masīvu.

Sapratīsim to ar piemēru.

char s1 = "Sveiks"; char s2 = "kungs"; s1 = s1 + s2; // kļūdu operatorus nevar piemērot s2 = s1; // kļūda Rakstzīmju rādītājs char * s = "Rīts"; char * p; p = s; // izpilda

Iepriekš minētajā piemērā mēs bijām deklarējuši divus rakstzīmju masīvu s1, s2 un divus rakstzīmju rādītājus s un p. Rakstzīmju masīvs s1 un s2 ir inicializēts, mēs redzam, ka ne pievienošanas operators (+), ne piešķiršanas operators nedarbojas ar rakstzīmju masīvu. Bet rakstzīmju rādītāju var piešķirt citam rakstzīmju rādītājam.

Atcerieties, kad rakstzīmju masīvs ir inicializēts, to nevar atkārtoti inicializēt ar citu rakstzīmju kopu. Piekļuve rakstzīmju masīvam vai virknei ar nulles robežu ir ātra, salīdzinot ar virkni C ++.

Stīgas definīcija

Virkne nav iebūvēts datu tips C ++. Tas ir klases objekts, kura tips ir “virkne”. Tāpat kā C ++ klasē klases radīšana ir gluži kā “tipa” izveidošana. Klase “virkne” ir C ++ bibliotēkas sastāvdaļa. Tas satur rakstzīmju kopu vai rakstzīmju masīvu kopumā. Standarta stīgu klases izstrādei ir trīs iemesli.

  • Pirmkārt ir “konsekvence”, rakstzīmju masīvi paši par sevi nav datu tipi.
  • Otrkārt ir “ērtības”, rakstzīmju masīvā nevar izmantot standarta operatorus.
  • Trešais ir “drošība”, masīva robežas tiek viegli pārsniegtas.

Ļaujiet mums saprast stīgas ar piemēru.

virkne s1; s1 = "sveiki"; virkne s2 ("Labrīt"); virkne s3 = "Hennery"; virkne s4;

Iepriekš minētajā deklarācijā tiek deklarēti četri virknes mainīgie vai objekti (s1, s2, s3, s4). Iepriekš minētajā deklarācijā es parādīju trīs virknes inicializācijas veidus. Virkne s1 tiek deklarēta un pēc tam atsevišķi inicializēta. Virkni s2 inicializē klases “Stīgu” konstruktors. Virkne s3 tiek inicializēta deklarēšanas brīdī, kā to dara parastais datu tips. Stīgu mainīgajiem var izmantot standarta operatoru.

s4 = s1; // vienas virknes objekta piešķiršana citiem s4 = s1 + s2; // divu virkņu pievienošana un rezultāta glabāšana trešajā virknē, ja (s3> s2) // divu virkņu virkņu s5 (s1) salīdzināšana; izveidojot jaunu virknes objektu, izmantojot esošo virknes objektu

Iepriekš minētajā kodā virknei tiek piemēroti dažādi operatori un tiek veiktas dažādas operācijas. Pirmais paziņojums kopē vienu virknes objektu citā virknes objektā. Otrajā paziņojumā divas virknes ir saliktas un saglabātas trešajā virknē. Trešajā paziņojumā tiek salīdzinātas divas virknes. Ceturtajā paziņojumā tiek izveidots jauns virknes objekts, izmantojot jau esošo virknes objektu.

Piekļuve virknei ir lēna, salīdzinot ar rakstzīmju masīvu vai ar nulli pārtrauktu virkni.

Galvenās atšķirības starp rakstzīmju masīvu un virkni

  1. Rakstzīmju masīvs ir mainīgo lielumu kolekcija, kuriem ir rakstzīmju datu tips. Stīgas ir klase, kas tiek aktualizēta, lai deklarētu stīgas.
  2. Izmantojot indeksa vērtību, var piekļūt rakstzīmei no rakstzīmju masīva. No otras puses, ja vēlaties piekļūt noteiktai virknes rakstzīmei, varat tai piekļūt, izmantojot funkciju string’s_name.charAt (indekss).
  3. Tā kā masīvs nav datu tips, tāpat arī rakstzīme nav datu tips. No otras puses, tāpēc, ka virkne ir klase, tā darbojas kā atsauces tips, tāpēc var teikt, ka virkne ir datu tips.
  4. Rakstzīmju masīvā nevar lietot nevienu operatoru, turpretī operatorus var izmantot arī virknē.
  5. Būt masīva rakstzīmju masīvam ir noteikts garums, un tā robežas var viegli pārsniegt. Kur stīgai nav robežu.
  6. Masīva elementi tiek glabāti blakus esošajā atmiņas vietā, līdz ar to tiem var piekļūt ātrāk nekā virknes mainīgajam.

Secinājums:

Nespēja darboties ar rakstzīmju masīvu paaugstināja standarta virkņu klases attīstību.