Suositeltava, 2024

Toimituksen Valinta

Merkkien ja merkkijonojen välinen ero

C ++ tukee molempia, merkkijonoa ja merkkijonoa, sillä C ++: lla on huomattavia etuja molempien käyttämisessä. Mutta kyvyttömyys toimia merkkiryhmällä nostaa luokan merkkijonon kehittymistä. Sekä merkkiryhmä että merkkijono sisältävät merkkijonon. Mutta olennainen ero merkistöryhmän ja merkkijonon välillä on, että "merkkiryhmää" ei voida käyttää tavallisilla operaattoreilla, kun taas "merkkijono" -objekteja voidaan käyttää tavallisilla operaattoreilla. Tutkitaan muita merkkiryhmän ja merkkijonon välisiä eroja.

Vertailukaavio

Vertailun perusteetMerkkiliuskajono
perustiedotMerkistöryhmä on merkkien tietotyypin muuttujien kokoelma.Merkkijono on luokka ja merkkijonon muuttujat ovat luokan "merkkijono".
Syntaksichar array_name [koko];merkkijono_nimi;
indeksointiMerkkiryhmässä oleva yksittäinen merkki voidaan käyttää sen indeksin avulla.Merkkijonossa voidaan käyttää merkkiä funktiolla "string_name.charAt (index)".
TietotyyppiMerkkiryhmä ei määritä tietotyyppiä.Merkkijono määrittää datatyypin C ++: ssa.
operaattoritC ++: n operaattoreita ei voi käyttää merkkiryhmään.Voit käyttää merkkijonoon tavallista C ++ -käyttäjää.
RajaArray-rajat ylittyvät helposti.Rajat eivät ylity.
PääsyNopea pääsy.Hidas yhteys.


Määritelmä Character Array

Merkkiryhmä on kokoelma "char" -tietotyypin muuttujia; se voi olla yksiulotteinen ryhmä tai kaksiulotteinen taulukko. Sitä kutsutaan myös "nolla päätetyksi merkkijonoksi". Merkistöryhmä on sarja merkkejä, jotka tallennetaan peräkkäisiin muistiosoitteisiin. Merkkiryhmässä tietyn merkin voi käyttää sen indeksistä. ”Null-merkki” lopettaa merkkiryhmän ”.

Otetaan esimerkki merkkiryhmästä: -

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

Tässä "char" on merkkidatatyyppi, "nimi" on merkkiryhmän muuttujan nimi. Olin osoittanut kaksi tapaa aloittaa merkkijonon. Ensimmäisessä menetelmässä null on nimenomaisesti mainittu ja toisessa menetelmässä kääntäjä lisää nollan automaattisesti.

Merkkijonon loppu on aina nolla. se on merkkijonon päättävä merkki. Merkkiryhmä ei ole sisäänrakennettu tietotyyppi; luomme merkkiryhmän julistamalla sen. Et voi käyttää tavallisia operaattoreita merkkiryhmässä. Toimiminen merkistöryhmällä on joitakin sisäänrakennettuja toimintoja, kuten (strlen (), strlwr (), strupr (), strcat (). Koska tavallisia operaattoreita ei voida käyttää merkkiryhmään, ne eivät voi osallistua mihinkään ilmaisuun.

Merkkijonon merkkijonoa voidaan myös luoda.

Ymmärrämme sen esimerkin avulla.

 char s1 [] = "Hei"; char s2 [] = "Sir"; s1 = s1 + s2; // virhetoimintoja ei voida käyttää s2 = s1; // virhe Merkin osoitin char * s = "Aamu"; char * p; p = s; // toteuttaja 

Yllä olevassa esimerkissä olimme ilmoittaneet kaksi merkkiryhmää s1, s2 ja kaksi merkkipistettä s ja p. Merkkiryhmä s1 ja s2 alustetaan, voimme nähdä, että ei lisäoperaattori (+) eikä määritysoperaattori toimi merkkiryhmässä. Mutta merkkikohdistin voidaan liittää toiseen merkin osoittimeen.

Muista, kun merkkiryhmä on alustettu, sitä ei voi alustaa uudelleen toiseen merkkiryhmään. Pääsy merkkiryhmään tai nolla päätettyyn merkkijonoon on nopea verrattuna C ++: n merkkijonoon.

Merkkijonon määritelmä

Merkkijono ei ole sisäänrakennettu C ++ -tietotyyppi. Se on luokan “merkkijono” luokkaobjekti. Kuten C ++: ssa luodaan luokka on aivan kuin "tyypin" luominen. Luokka “merkkijono” on osa C ++ -kirjastoa. Se sisältää merkkijonon tai merkkiryhmän kokonaisuuden. Perusmerkkijonon kehittämisen taustalla on kolme syytä.

  • Ensinnäkin on ”johdonmukaisuus”, merkkiryhmät eivät ole itsenäisiä tietotyyppejä.
  • Toinen on ”mukavuus”, et voi käyttää tavallisia operaattoreita merkkiryhmässä.
  • Kolmas on "turvallisuus", matriisirajat ylittyvät helposti.

Ymmärtäkäämme merkkijonoja esimerkin avulla.

 merkkijono s1; s1 = "Hei"; merkkijono s2 ("Hyvää huomenta"); merkkijono s3 = "Hennery"; merkkijono s4; 

Yllä olevassa ilmoituksessa ilmoitetaan neljä merkkijononmuuttajaa tai kohteita (s1, s2, s3, s4). Yllä olevassa ilmoituksessa olin osoittanut kolme tapaa aloittaa merkkijono. Merkkijono s1 on ilmoitettu ja alustettu erikseen. Merkkijonon s2 aloittaa luokan “String” rakentaja. Merkkijono s3 alustetaan sen ilmoitushetkellä kuin normaali tietotyyppi. Voimme soveltaa tavallista operaattoria merkkijonon muuttujiin.

 s4 = s1; // yhden merkkiobjektin määrittäminen muille s4 = s1 + s2; // lisäämällä kaksi merkkijonoa ja tallentamalla tulos kolmannessa merkkijonossa, jos (s3> s2) // vertailee kahta merkkijonoa s5 (s1); uuden merkkiobjektin luominen olemassa olevan merkkiobjektin avulla 

Yllä olevassa koodissa eri operaattoreita käytetään merkkijonoon ja suoritetaan erilaisia ​​toimintoja. Ensimmäinen lause kopioi yhden merkkiobjektin toiseen merkkikohtaan. Toisessa lausunnossa kaksi merkkijonoa yhdistetään ja tallennetaan kolmanteen merkkijonoon. Kolmannessa lausunnossa verrataan kahta merkkijonoa. Neljännessä lausunnossa luodaan uusi merkkiobjekti käyttämällä jo olemassa olevaa merkkiobjektia.

Merkkijonon käyttö on hidasta verrattuna merkkiryhmään tai nollaan päättyneeseen merkkijonoon.

Merkkien ja merkkijonojen keskeiset erot

  1. Merkkiryhmä on kokoelma muuttujia, jotka ovat luonteeltaan datatyyppiä. Merkkijono on luokka, joka lähetetään lausumaan merkkijonoja.
  2. Indeksiarvon avulla voit käyttää merkkijonon merkkiä. Toisaalta, jos haluat käyttää tiettyä merkkiä merkkijonossa, voit käyttää sitä merkkijonon_nimi.charAt (indeksi) avulla.
  3. Koska taulukko ei ole datatyyppi, merkki ei myöskään ole datatyyppi. Toisaalta merkkijono, joka on luokka, toimii referenssityyppinä, joten voidaan sanoa, että merkkijono on tietotyyppi.
  4. Et voi käyttää mitään operaattoria merkkiryhmässä, mutta voit käyttää operaattoreita merkkijonolla.
  5. Massiivimerkkiryhmän ollessa kiinteä pituus ja sen rajat voidaan helposti ylittää. Jos Stringillä ei ole rajoja.
  6. Array-elementit tallennetaan vierekkäiseen muistipaikkaan, jolloin niitä voidaan käyttää nopeammin kuin merkkijonon muuttujaa.

johtopäätös:

Kyvyttömyys toimia merkkiryhmällä nosti standardin merkkiluokan kehittymistä.

Top