Ero merkkijonojen ja merkkijonojen välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 1 Huhtikuu 2021
Päivityspäivä: 5 Saattaa 2024
Anonim
Ero merkkijonojen ja merkkijonojen välillä - Tekniikka
Ero merkkijonojen ja merkkijonojen välillä - Tekniikka

Sisältö


C ++ tukee molempia, Merkkijono ja merkkijono, koska C ++: lla on huomattavia etuja molempien käyttämisessä. Mutta kyvyttömyys toimia merkkijonoissa lisää luokkamerkkijonojen kehitystä. Sekä merkkijono että merkkijono sisältävät merkkijonojen. Periaatteellinen ero merkki- ja merkkijonojen välillä on kuitenkin siinä, että ”merkistöä” ei voida käyttää vakiooperaattoreilla, kun taas “merkkijono” -objekteja voidaan käyttää vakiooperaattoreiden kanssa. Tutkitaan muita merkistöryhmän ja merkkijonon välisiä eroja.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetMerkkijonojono
perustiedotMerkkijono on muuttujien kokoelma, merkkitietotyyppi.Merkkijono on luokka ja merkkijonon muuttujat ovat luokan "merkkijono" objekti.
Syntaksichar-taulukon_nimi;merkkijono merkkijono;
indeksointiMerkkitaulukon yksittäiseen merkkiin pääsee hakemistossaan taulukossa.Merkkijonossa tiettyä merkkiä voidaan käyttää toiminnolla "string_name.charAt (index)".
TietotyyppiMerkkijono ei määrittele datatyyppiä.Merkkijono määrittelee tietotyypin C ++: ssa.
operaattoritC ++: n operaattoreita ei voida käyttää merkistössä.Voit käyttää merkkijonoon tavallista C ++ -operaattoria.
RajaMatriisin rajat ylitetään helposti.Rajoja ei ylitetä.
PääsyNopea pääsy.Hidas pääsy.


Määritelmä Merkkijono


Merkkijono on kokoelma ”char” -tyypin muuttujia; se voi olla yksiulotteinen tai kaksiulotteinen taulukko. Sitä kutsutaan myös ”nollaksi päättyväksi merkkijonoksi”. Merkkijono on merkkijono, joka tallennetaan peräkkäisissä muistiosoitteissa. Merkkijonoissa tiettyyn merkkiin pääsee hakemiston avulla. ”Null-merkki” lopettaa merkkijonojen ”.

Otetaan esimerkki merkistöstä: -

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

Tässä “char” on merkkitietotyyppi, “nimi” on merkistöryhmän muuttuva nimi. Olin osoittanut kaksi tapaa merkistöryhmän alustamiseen. Ensimmäisessä menetelmässä nolla mainitaan nimenomaisesti ja toisessa menetelmässä kääntäjä lisää nollan automaattisesti.

Merkkijonon lopussa on aina nolla merkki; se on merkistöryhmän päättävä merkki. Merkkijono ei ole sisäänrakennettu tietotyyppi; Luomme merkkijono julistamalla sen. Et voi käyttää vakiooperaatioita merkistössä. Merkkijonojen käyttämiseksi on olemassa joitain sisäänrakennettuja toimintoja, kuten (strlen (), strlwr (), strupr (), strcat (). Koska vakiooperaattoreita ei voida soveltaa merkkijonoon, he eivät voi osallistua mihinkään lausekkeeseen.


Merkkijono voidaan myös luoda merkkijono.

Ymmärretään se esimerkillä.

char s1 = "Hei"; char s2 = "Sir"; s1 = s1 + s2; // virheoperaattoreita ei voida soveltaa s2 = s1; // virhe Merkkikohta char * s = "Aamu"; char * p; p = s; // toteuttaja

Yllä olevassa esimerkissä olimme ilmoittaneet kaksi merkistöä s1, s2 ja kaksi merkkiosoitinta s ja p. Merkkijärjestelmä s1 ja s2 alustetaan, voimme nähdä, etteivät lisäoperaattori (+) eikä määritysoperaattori toimi merkistössä. Mutta merkkikohta voidaan osoittaa toiselle merkkiosoittimelle.

Muista, kun merkkijono on alustettu, sitä ei voida alustaa uudelleen toiseen merkkijoukkoon. Pääsy merkkijonoon tai nollapäätettyyn merkkijonoon on nopea verrattuna merkkijonoon C ++.

Määritelmä Merkkijono

Merkkijono ei ole sisäinen tietotyyppi C ++. Se on luokkaobjekti, tyyppi ”merkkijono”. Kuten C ++: ssa, luokan luominen on aivan kuin "tyypin" luominen. Luokka “merkkijono” on osa C ++ -kirjastoa. Se sisältää merkkijoukon tai merkkijonojen kokonaisuuden. Normaalin kielen luokan kehittämiseen on kolme syytä.

  • Ensimmäinen on "johdonmukaisuus", merkki taulukot eivät ole tietotyyppejä itsessään.
  • Toinen on ”mukavuus”, et voi käyttää vakiooperaattoreita merkistössä.
  • kolmas on "turvallisuus", ryhmän rajat ylittyvät helposti.

Ymmärtäkäämme jouset esimerkillä.

merkkijono s1; s1 = "Hei"; merkkijono s2 ("Huomenta"); merkkijono s3 = "Hennery"; merkkijono s4;

Yllä olevassa ilmoituksessa ilmoitetaan neljä merkkijonomuuttujaa tai objektia (s1, s2, s3, s4). Yllä olevassa ilmoituksessa olin osoittanut kolme tapaa merkkijonon alustamiseen. Merkkijono s1 julistetaan ja alustetaan sitten erikseen. Merkkijono s2 alustaa luokan ”String” rakentaja. Merkkijono s3 alustetaan sen ilmoittamishetkellä normaaliksi tietotyypiksi. Voimme soveltaa vakiooperaattoria merkkijonomuuttujiin.

s4 = s1; // yhden merkkijonoobjektin osoittaminen toiselle s4 = s1 + s2; // lisätään kaksi merkkijonoa ja tallennetaan tulos kolmanteen merkkijonoon, jos (s3> s2) // verrataan kahta merkkijonoa s5 (s1); uuden merkkijonoobjektin luominen olemassa olevalla merkkijonoobjektilla

Yllä olevassa koodissa useita operaattoreita käytetään merkkijonoon ja suoritetaan erilaisia ​​toimintoja. Ensimmäinen lause kopioi merkkijonoobjektin toiseen merkkijonoobjektiin. Toisessa lauseessa kaksi merkkijonoa yhdistetään ja tallennetaan kolmanteen merkkijonoon. Kolmannessa lauseessa verrataan kahta merkkijonoa. Neljännessä lauseessa luodaan uusi merkkijonoobjekti jo olemassa olevan merkkijonoobjektin avulla.

Merkkijonoon pääsy on hidasta merkkijonoon tai nollaan päättyvään merkkijonoon verrattuna.

Merkittävät erot hahmoluettelon ja merkkijonon välillä

  1. Merkkijono on kokoelma muuttujia, jotka ovat merkkityyppisiä. Merkkijono on luokka, joka hetkellistetään julistamaan merkkijonot.
  2. Hakemistoarvon avulla pääset merkkiin merkistöstä. Toisaalta, jos haluat käyttää tiettyä merkkijonoa, voit käyttää sitä funktion merkkijono_nimi.charAt (hakemisto).
  3. Koska taulukko ei ole tietotyyppi, niin myös merkki ei ole tietotyyppi. Toisaalta, koska merkkijono on luokka, toimii siis referenssityyppinä, voidaan sanoa, että merkkijono on tietotyyppi.
  4. Et voi käyttää mitään operaattoria merkistössä, kun taas operaattoreita voi käyttää merkkijonossa.
  5. Matriisimerkkijärjestelmänä on kiinteä pituus ja sen rajat voidaan helposti ylittää. Missä kielillä ei ole rajoja.
  6. Taulukkoelementit tallennetaan vierekkäiseen muistipaikkaan, joten niihin pääsee nopeammin kuin merkkijono.

johtopäätös:

Kyvyttömyys toimia merkkijonoissa herätti vakiomerkkijonojen kehitystä.