Rekomenduojama, 2025

Redaktoriaus Pasirinkimas

Skirtumas tarp simbolių ir eilutės

„C ++“ palaiko abu, simbolių matricas ir eilutes, nes „C ++“ turi daug naudos abiem. Tačiau, nesugebėjimas veikti pagal simbolių masyvą padidina klasės eilutės raidą. Tiek simbolių masyvas, tiek eilutė turi simbolių seką. Tačiau esminis skirtumas tarp simbolių masyvo ir eilutės yra tas, kad „simbolių masyvas“ negali būti naudojamas su standartiniais operatoriais, o „eilutės“ objektai gali būti valdomi su standartiniais operatoriais. Ištirsime kitus skirtumus tarp simbolių masyvo ir eilutės.

Palyginimo diagrama

Palyginimo pagrindasSimbolių matricaString
PagrindinisSimbolių masyvas yra simbolių duomenų tipo kintamųjų rinkinys.String yra klasė, o eilutės kintamieji yra klasės „eilutės“ objektas.
Sintaksėchar array_name [dydis];string string_name;
IndeksavimasIndividualų simbolį simbolių matricoje galima pasiekti pagal indeksą masyve.Straipsnyje tam tikras simbolis pasiekiamas funkcija "string_name.charAt (index)".
Duomenų tipasSimbolių masyvas neapibrėžia duomenų tipo.Styga apibrėžia duomenų tipą C + +.
OperatoriaiC ++ operatoriai negali būti taikomi simbolių masyvui.Galite naudoti standartinį C ++ operatorių eilutėje.
RibosArray ribos yra lengvai viršijamos.Ribos nebus viršytos.
PrieigaGreita prieiga.Lėta prieiga.


Simbolių struktūros apibrėžimas

Simbolių masyvas yra „char“ duomenų tipo kintamųjų rinkinys; tai gali būti vieno matmens masyvas arba dviejų matmenų masyvas. Ji taip pat vadinama „nulinė nutraukta eilutė“. Simbolių masyvas yra simbolių seka, saugoma nuosekliuose atminties adresuose. Simbolių matricoje tam tikras simbolis pasiekiamas pagal jo indeksą. „Nulinis simbolis“ nutraukia simbolių masyvą “.

Paimkime simbolių masyvo pavyzdį: -

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

Čia „char“ yra simbolių duomenų tipas, „name“ yra simbolių masyvo kintamasis. Parodiau du būdus, kaip inicijuoti simbolių masyvą. Pirmajame metode null yra aiškiai paminėtas ir antrajame metode kompiliatorius automatiškai įterpia nulį.

Stygos pabaiga visada yra nulinis; tai yra simbolių masyvo galinis simbolis. Simbolių masyvas nėra integruotas duomenų tipas; mes sukuriame simbolių masyvą, paskelbdami ją. Jūs negalite taikyti standartinių operatorių simbolių matricoje. Norėdami veikti simbolių matricoje, yra keletas įmontuotų funkcijų, tokių kaip (strlen (), strlwr (), strupr (), strcat (). Kadangi standartiniai operatoriai negali būti naudojami simbolių masyvui, jie negali dalyvauti jokioje išraiška.

Taip pat gali būti sukurtas simbolių žymeklis į simbolių masyvą.

Suprasime jį su pavyzdžiu.

 char s1 [] = "Sveiki"; char s2 [] = "Sir"; s1 = s1 + s2; // klaidų operatoriai negali būti taikomi s2 = s1; // klaida Simbolių žymeklis char * s = "Rytas"; char * p; p = s; // įvykdo 

Pirmiau pateiktame pavyzdyje mes paskelbėme du simbolių masyvus s1, s2 ir du simbolių rodiklius s ir p. Simbolių masyvas s1 ir s2 yra inicijuoti, matome, kad nei papildomas operatorius (+), nei priskyrimo operatorius veikia simbolių masyve. Tačiau simbolių žymeklis gali būti priskirtas kitam simbolių rodikliui.

Atminkite, kai inicijuojamas simbolių masyvas, jis negali būti inicijuojamas dar kartą į kitą simbolių rinkinį. Prieiga prie simbolių masyvo arba nulinės baigtos eilutės yra greita, lyginant su eilute C ++.

Stygos apibrėžimas

Styga nėra integruotas C ++ duomenų tipas. Tai klasės „string“ tipo objektas. Kaip ir C + + kuriant klasę, kaip ir „tipo“ sukūrimas. Klasės „string“ yra C ++ bibliotekos dalis. Jis turi simbolių ar simbolių rinkinio visumą. Yra trys priežastys, kodėl sukurta standartinė eilutė.

  • Pirma yra „nuoseklumas“, simbolių masyvai nėra duomenų tipai.
  • Antra, „patogumas“, negalite naudoti standartinių operatorių simbolių matricoje.
  • Trečia, „saugumas“, masyvo ribos yra lengvai viršijamos.

Suprasime eilutes su pavyzdžiu.

 eilutė s1; s1 = "Sveiki"; eilutė s2 („Geras rytas“); string s3 = "Hennery"; eilutė s4; 

Pirmiau pateiktoje deklaracijoje deklaruojami keturi eilutės kintamieji arba objektai (s1, s2, s3, s4). Pirmiau pateiktoje deklaracijoje aš parodysiu tris eilutės inicijavimo būdus. Straipsnis s1 yra deklaruojamas ir atskirai inicijuojamas. Stygą s2 inicijuoja klasės „String“ konstruktorius. Straipsnis s3 inicijuojamas deklaracijos pateikimo metu kaip įprastas duomenų tipas. Standartinį operatorių galime taikyti eilutės kintamiesiems.

 s4 = s1; // priskiria vieną eilutės objektą kitiems s4 = s1 + s2; // pridedant dvi eilutes ir įrašant rezultatą į trečią eilutę, jei (s3> s2) // lyginant dvi eilutes eilutes s5 (s1); sukurti naują eilutės objektą naudojant esamą eilutės objektą 

Anksčiau pateiktame kode įvairūs operatoriai yra naudojami eilutėje ir atliekamos įvairios operacijos. Pirmasis teiginys kopijuoja vieną eilutės objektą į kitą eilutės objektą. Antrajame sakinyje dvi eilutės yra susietos ir saugomos trečioje eilutėje. Trečiame teiginyje lyginamos dvi eilutės. Ketvirtame teiginyje sukuriamas naujas eilutės objektas naudojant jau esamą eilutės objektą.

Prieiga prie eilutės yra lėta, palyginti su simbolių matrica arba nulinė nutraukta eilute.

Pagrindiniai skirtumai tarp simbolių ir eilutės

  1. Simbolių masyvas - tai kintamųjų rinkinys, turintis simbolių duomenų tipą. Stygos yra klasė, kuri yra išreikšta, kad deklaruotų eilutes.
  2. Naudojant indekso vertę, galite pasiekti simbolį iš simbolių masyvo. Kita vertus, jei norite pasiekti tam tikrą eilutės simbolį, galite jį pasiekti pagal funkcijų eilutės_norį.charAt (indeksas).
  3. Kadangi masyvas nėra duomenų tipas, taip pat ir simbolis nėra duomenų tipas. Kita vertus, eilutė, kaip klasė, veikia kaip atskaitos tipas, todėl galima teigti, kad eilutė yra duomenų tipas.
  4. Jūs negalite taikyti jokio operatoriaus simbolių matricoje, o jūs galite taikyti operatorius eilutėje.
  5. Būdamas masyvo simbolių matrica turi fiksuotą ilgį ir jos ribas galima lengvai viršyti. Jei eilutė neturi jokių ribų.
  6. Array elementai yra saugomi gretimoje atminties vietoje, todėl juos galima pasiekti greičiau nei eilutės kintamasis.

Išvada:

Nesugebėjimas veikti simbolių masyvu pakėlė standartinės eilutės klasės plėtrą.

Top