Forskjellen mellom karakteroppsett og streng

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 6 Kan 2024
Anonim
The Difference in Strength of Ukraine vs Russia, the Winner of the War is Clear.
Video: The Difference in Strength of Ukraine vs Russia, the Winner of the War is Clear.

Innhold


C ++ støtter begge, Tegnserie og streng, da C ++ har betydelige fordeler ved å bruke begge. Men manglende evne til å operere på karaktergruppe øker utviklingen av klassestreng. Både et tegnsett og en streng inneholder sekvensen med tegn. Men den grunnleggende forskjellen mellom tegnserie og streng er at "karakteroppstillingen" ikke kan betjenes med standardoperatører, mens "streng" -objektene kan betjenes med standardoperatører. La oss studere de andre forskjellene mellom et tegnsett og en streng.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningKarakter Arraystring
grunn~~POS=TRUNCTegnarray er samling av variabler, av karakterdatatype.Streng er klasse og variabler av streng er gjenstand for klasse "streng".
syntaxrøye array_name;streng string_name;
indekseringDu kan få tilgang til et individuelt tegn i en tegnserie med indeksen i matrisen.I streng kan du få tilgang til det aktuelle tegnet med funksjonen "string_name.charAt (index)".
Data-typeEn karaktergruppe definerer ikke en datatype.En streng definerer en datatype i C ++.
operatørerOperatører i C ++ kan ikke brukes på tegnsett.Du kan bruke standard C ++ -operatør på strengen.
GrenseArraygrenser blir lett overskredet.Grenser vil ikke overkjøres.
AdgangRask tilgang.Sakte tilgang.


Definisjon av Character Array


En karaktergruppe er en samling av variablene til “char” -datatype; det kan være en endimensjonal matrise eller en todimensjonal matrise. Det kalles også “null terminert streng”. Et tegnsett er en sekvens av tegnene som er lagret i påfølgende minneadresser. I et tegnsett kan du få tilgang til et bestemt tegn ved hjelp av indeksen. En "Null karakter" avslutter tegnsoppstillingen ".

La oss ta et eksempel på tegnsett: -

røye navn = {A, j, a, y, 0}; eller røykenavn = "Ajay";

Her er "char" en karakterdatatype, "name" er et variabelt navn på karakteroppstillingen. Jeg hadde vist to måter å initialisere karakteroppstillingen. I den første metoden blir null eksplisitt nevnt, og i den andre metoden setter kompilatoren automatisk null.

Enden på strengen er alltid et nulltegn; det er den avsluttende karakteren til karakteroppstillingen. Et tegnsett er ikke en innebygd datatype; vi lager karakteroppsats ved å erklære det. Du kan ikke bruke standardoperatører på et tegnsett. For å operere på tegnsett er det noen innebygde funksjoner som, (strlen (), strlwr (), strupr (), strcat ()). Siden standardoperatørene ikke kan brukes på et tegnsett, kan de ikke delta i noe uttrykk.


Tegnpekeren til en karaktergruppe kan også opprettes.

La oss forstå det med et eksempel.

char s1 = "Hei"; char s2 = "Sir"; s1 = s1 + s2; // feiloperatører kan ikke brukes s2 = s1; // error Character pointer char * s = "Morning"; røye * p; p = s; // Utfører

I eksemplet over hadde vi erklært to tegnsett s1, s2 og to tegnspekere s og p. Tegnarray s1 og s2 er initialisert, vi kan se at verken tilleggsoperatøren (+) eller oppdragsoperatøren fungerer på tegnsoppstillingen. Men en tegnpeker kan tilordnes en annen tegnpeker.

Husk at når tegneserien er initialisert, kan den ikke initialiseres til et annet sett med tegn. Tilgangen til en karaktergruppe eller en null-avsluttet streng er rask sammenlignet med streng i C ++.

Definisjon av streng

En streng er ikke en innebygd datatype C ++. Det er et klasseobjekt av typen “streng”. Som i C ++ er det å lage en klasse akkurat som å lage en “type”. Klassen “streng” er en del av C ++ bibliotek. Den inneholder settet med karakter eller karakteroppsats som en helhet. Det er tre grunner bak utviklingen av en standard strengklasse.

  • Først er "konsistens", karakteroppstillingene er ikke datatyper i seg selv.
  • Sekund er "bekvemmelighet", kan du ikke bruke standardoperatører på en tegnserie.
  • Tredje er "sikkerhet", matrisegrenser blir lett overskredet.

La oss forstå strenger med et eksempel.

streng s1; s1 = "Hei"; streng s2 ("God morgen"); string s3 = "Hennery"; streng s4;

I deklarasjonen ovenfor er fire strengvariabler eller objekter (s1, s2, s3, s4) deklarert. I erklæringen over hadde jeg vist tre måter å initialisere strengen på. Strengen s1 deklareres og initialiseres deretter separat. Strengen s2 initialiseres av konstruktøren av klassen “String”. Strengen s3 initialiseres på tidspunktet for erklæringen slik normal datatype gjør. Vi kan bruke standardoperatøren på strengvariablene.

s4 = s1; // tilordne ett strengobjekt til andre s4 = s1 + s2; // legge til to strenger og lagre resultatet i tredje streng hvis (s3> s2) // sammenligne to strengestrenger s5 (s1); opprette et nytt strengobjekt ved å bruke eksisterende strengobjekt

I koden over brukes forskjellige operatører på en streng og forskjellige operasjoner blir utført. Den første uttalelsen kopierer ett strengobjekt til et annet strengobjekt. I den andre setningen blir to strenger sammenlagt og lagret i en tredje streng. I den tredje uttalelsen sammenlignes to strenger. I den fjerde uttalelsen opprettes et nytt strengobjekt ved hjelp av det allerede eksisterende strengobjektet.

Tilgangen til strengen er langsom sammenlignet med en tegnserie eller null-avsluttet streng.

Viktige forskjeller mellom tegnsett og streng

  1. En karaktergruppe er en samling av variabler som er av karakterdatatype. String er en klasse som er innstilt for å erklære strenger.
  2. Ved å bruke indeksverdi kan du få tilgang til et tegn fra en tegnserie. På den annen side, hvis du vil ha tilgang til et bestemt tegn i en streng, kan du få tilgang til det ved å bruke funksjonens string's_name.charAt (indeks).
  3. Ettersom en matrise ikke er en datatype, er et tegn heller ikke en datatype. På den annen side, streng er en klasse handling som en referansetype, kan det sies at streng er en datatype.
  4. Du kan ikke bruke noen operatør på en tegnserie, mens du kan bruke operatører på String.
  5. Å være en matrixkarakter har en fast lengde, og grensene kan lett overskrides. Hvor String ikke har noen grenser.
  6. Array-elementer lagres i et sammenhengende minneplass, derav kan nås raskere enn strengvariabel.

Konklusjon:

Manglende evne til å operere på karaktergruppe løftet utviklingen av standard strengklasse.