Ieteicams, 2021

Redaktora Izvēle

Atšķirība starp rakstzīmju bloku un virkni

C + + atbalsta gan rakstzīmju kopu, gan virkni, jo C + + ir ievērojamas priekšrocības, izmantojot abus. Bet, nespēja darboties rakstzīmju masīvā palielina klases virknes attīstību. Gan rakstzīmju kopa, gan virkne satur rakstzīmju secību. Bet būtiskākā atšķirība starp rakstzīmju bloku un virkni ir tā, ka “rakstzīmju bloku” nevar darbināt ar standarta operatoriem, bet “string” objekti var tikt darbināti ar standarta operatoriem. Pētīsim citas atšķirības starp rakstzīmju bloku un virkni.

Salīdzinājuma diagramma

Salīdzinājuma pamatsRakstzīmju bloksString
PamataRakstzīmju masīvs ir rakstzīmju datu tipa mainīgo kolekcija.String ir klase un virknes mainīgie ir klases "string" objekts.
Sintaksechar array_name [izmērs];virknes string_name;
IndeksācijaIndividuālo rakstzīmi rakstzīmju masīvā var piekļūt pēc tās indeksa masīvā.Stringā konkrēto rakstzīmi var piekļūt ar funkciju "string_name.charAt (indekss)".
Datu tipsRakstzīmju kopa nenosaka datu tipu.Svītra definē datu tipu C + +.
OperatoriOperatorus C + + nevar izmantot rakstzīmju masīvā.Stringā var izmantot standarta C + + operatoru.
RobežaArray robežas ir viegli pārsniegtas.Robežas netiks pārsniegtas.
PiekļuveĀtra piekļuve.Lēna piekļuve.


Rakstzīmju bloka definīcija

Rakstzīmju masīvs ir “char” datu tipu mainīgo kolekcija; tas var būt viena dimensijas masīvs vai divdimensiju masīvs. To sauc arī par “null pārtrauktu virkni”. Rakstzīmju kopa ir virkne rakstzīmju, kas tiek glabātas secīgās atmiņas adresēs. Rakstzīmju blokā konkrētu rakstzīmi var piekļūt pēc tās indeksa. “Null rakstzīme” pārtrauc rakstzīmju bloku ”.

Veiksim piemēru rakstzīmju masīvam: -

 char nosaukums [] = {'A', 'j', 'a', 'y', '0'; vai char nosaukums [] = "Ajay"; 

Šeit “char” ir rakstzīmju datu tips, “name” ir rakstzīmju masīva mainīgais nosaukums. Es parādīju divus veidus, kā inicializēt rakstzīmju bloku. Pirmajā metodē nepārprotami pieminēts null un otrajā metodē kompilators automātiski ievieto nulli.

Stīgas beigas vienmēr ir nulles raksturs; tas ir rakstzīmju masīvs. Rakstzīmju kopa nav iebūvēts datu tips; mēs izveidojam rakstzīmju bloku, paziņojot to. Jūs nevarat lietot standarta operatorus rakstzīmju masīvā. Lai darbotos ar rakstzīmju bloku, ir dažas iebūvētas funkcijas, piemēram, (strlen (), strlwr (), strupr (), strcat (). Tā kā standarta operatorus nevar lietot rakstzīmju masīvam, tie nevar piedalīties nevienā izteiksmē.

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

Sapratīsim to ar piemēru.

 char s1 [] = "Sveiki"; char s2 [] = "Sir"; s1 = s1 + s2; // kļūdas operatori nevar tikt izmantoti 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 paziņojām par divām rakstzīmju kopām s1, s2 un divām rakstzīmju norādēm s un p. Rakstzīmju masīvs s1 un s2 tiek inicializēts, mēs redzam, ka ne pievienošanas operators (+), ne uzdevuma 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 atkal inicializēt uz citu rakstzīmju kopu. Piekļuve rakstzīmju masīvam vai nulles beigu virknei ir ātra, salīdzinot ar virkni C ++.

String definīcija

Svītra nav iebūvēts C ++ datu tips. Tā ir klases “string” klases objekts. Tāpat kā C + +, radot klasi, ir tāpat kā “tipa” izveide. Klases “string” ir C ++ bibliotēkas daļa. Tā satur rakstzīmju vai rakstzīmju kopas kopumu kopumā. Standarta virknes klases izstrādei ir trīs iemesli.

  • Pirmkārt, tas ir „konsekvence”, rakstzīmju bloki paši par sevi nav datu veidi.
  • Otrkārt, ir “ērtības”, jūs nevarat izmantot standarta operatorus rakstzīmju masīvā.
  • Trešais ir „drošība”, masīvu robežas ir viegli pārsniegtas.

Ļaujiet mums saprast virknes ar piemēru.

 virkne s1; s1 = "Sveiki"; virkne s2 ("Labrīt"); string 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 biju parādījis trīs virknes inicializācijas veidus. Strīdi s1 tiek deklarēti un pēc tam atsevišķi inicializēti. Stīgu s2 inicializē klases „String” konstruktors. Svītru s3 inicializē tā deklarēšanas laikā, kā to dara parastais datu tips. Standarta operatoru varam izmantot virknes mainīgajiem.

 s4 = s1; // viena virknes objekta piešķiršana citiem s4 = s1 + s2; // pievienojot divas virknes un saglabājot rezultātu trešajā virknē, ja (s3> s2) // salīdzinot divas virknes virknes s5 (s1); izveidojot jaunu virknes objektu, izmantojot esošo virknes objektu 

Iepriekš minētajā kodā virknei tiek izmantoti dažādi operatori, un tiek veiktas dažādas operācijas. Pirmais apgalvojums kopē vienu virknes objektu uz citu virknes objektu. Otrajā paziņojumā divas virknes tiek sajauktas un saglabātas trešajā virknē. Trešajā paziņojumā salīdzina 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 bloku vai nulles beigu virkni.

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

  1. Rakstzīmju kopa ir mainīgo lielumu kolekcija, kas ir rakstura datu tipā. String ir klase, kas tiek rādīta, lai deklarētu virknes.
  2. Izmantojot indeksa vērtību, varat piekļūt rakstzīmei no rakstzīmju kopas. No otras puses, ja vēlaties piekļūt noteiktai rakstzīmei virknē, varat piekļūt tai ar funkciju string_name.charAt (indekss).
  3. Tā kā masīvs nav datu tips, tad raksturs arī nav datu tips. No otras puses, virkne, kas ir klase, darbojas kā atsauces veids, tāpēc var teikt, ka virkne ir datu tips.
  4. Jūs nedrīkstat lietot nevienu operatoru rakstzīmju masīvā, bet jūs varat lietot operatorus rindā.
  5. Masīvs rakstzīmju masīvam ir noteikts garums, un tās robežas var viegli pārsniegt. Ja virknei nav nekādu robežu.
  6. Array elementi tiek saglabāti blakus esošā atmiņas vietā, tādējādi tos var piekļūt ātrāk nekā virknes mainīgo.

Secinājums:

Nespēja darboties rakstzīmju masīvā paaugstināja standarta virknes klases attīstību.

Top