Anbefalt, 2024

Redaksjonens

Forskjellen mellom tegnfelt og streng

C ++ støtter begge, Character array og string, da C ++ har betydelige fordeler ved å bruke begge. Men manglende evne til å operere på karaktermatrise øker utviklingen av klassestrengen. Både en tegnserie og streng inneholder sekvensen av tegn. Men den grunnleggende forskjellen mellom tegnserien og strengen er at "tegnserien" ikke kan drives med standardoperatører, mens "strengen" -objektene kan drives med standardoperatører. La oss studere de andre forskjellene mellom et tegnfelt og en streng.

Sammenligningstabel

Grunnlag for sammenligningKarakter Arraystring
grunn~~POS=TRUNCTegn array er samling av variabler, av karakter datatype.String er klasse og variabler av streng er gjenstand for klasse "streng".
syntaxkarabell array_name [size];streng strengnavn;
indekseringEt individuelt tegn i en tegnet array kan nås med sin indeks i array.I streng kan den spesielle karakteren nås med funksjonen "string_name.charAt (index)".
Data-typeEt tegnfelt 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.
GrenseArray grenser er enkelt overkjørt.Grenser vil ikke overstige.
AdgangRask tilgang.Sakte tilgang.


Definisjon av karakterskala

Et tegnsystem er en samling av variablene av "char" datatype; det kan være et endimensjonalt array eller et todimensjonalt utvalg. Det kalles også "null terminated string". Et tegnfelt er en sekvens av tegnene som er lagret i påfølgende minneadresser. I et tegnefelt kan en bestemt karakter nås av indeksen. Et "Null-tegn" avslutter tegnserien ".

La oss ta et eksempel på tegnet array: -

 karnavnet [] = {'A', 'j', 'a', 'y', '\ 0'}; eller karnavnet [] = "Ajay"; 

Her er "char" en tegndatatype, "navn" er et variabelt navn på tegnserien. Jeg hadde vist to måter å initialisere tegnserien. I den første metoden nevnes nullen eksplisitt og i den andre metoden legger kompilatoren automatisk inn nullen.

Enden av strengen er alltid null karakter; det er den avsluttende karakteren av tegnserien. Et tegnfelt er ikke en innebygd datatype; vi lager karakteroppstilling ved å erklære den. Du kan ikke bruke standardoperatører på en tegnserie. For å operere på tegnet array er det noen innebygd funksjon som, (strlen (), strlwr (), strupr (), strcat ()). Ettersom standardoperatørene ikke kan brukes på en tegnserie, kan de ikke delta i noe uttrykk.

Tegnpekeren til en tegnefelt 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; // feil tegnpeker char * s = "morgen"; char * p; p = s; // Utfører 

I eksempelet ovenfor hadde vi deklarert to tegn-array s1, s2 og to tegn poeng s og p. Karaktergruppe s1 og s2 er initialisert, vi kan se at verken tilleggsoperatøren (+) eller oppdragsoperatøren virker på tegnserien. Men en tegnpeker kan tilordnes en annen tegnpeker.

Husk når tegnserien er initialisert, kan den ikke initialiseres igjen til et annet sett med tegn. Tilgangen til et tegnfelt eller en nullterminert streng er rask sammenlignet med streng i C ++.

Definisjon av streng

En streng er ikke en innebygd datatype av C ++. Det er et klasseobjekt av typen "streng". Som i C ++ oppretter en klasse akkurat som å lage en "type". Klassen "streng" er en del av C ++-biblioteket. Den inneholder settet med tegn eller tegnserie som helhet. Det er tre grunner bak utviklingen av en standardstrengsklasse.

  • Først er "konsistens", tegneseriene er ikke datatyper i seg selv.
  • For det andre er "bekvemmelighet", du kan ikke bruke standardoperatører på en tegnserie.
  • Tredje er "sikkerhet", array grenser er enkelt overkjørt.

La oss forstå strenge med et eksempel.

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

I den ovennevnte erklæringen er fire strengvariabler eller objekter (s1, s2, s3, s4) deklarert. I overstående erklæring hadde jeg vist tre måter å initialisere strengen. Strengen s1 er deklarert og deretter initialisert separat. Strengen s2 initialiseres av konstruktøren av klasse "String". Strengen s3 initialiseres på tidspunktet for erklæringen som vanlig datatype gjør. Vi kan bruke standardoperatøren til strengvariablene.

 s4 = s1; // tilordne en strengobjekt til andre s4 = s1 + s2; // legge to streng og lagre resultatet i tredje streng hvis (s3> s2) // sammenligner to strenger strenger s5 (s1); oppretter et nytt strengobjekt ved hjelp av eksisterende strengobjekt 

I overkoden brukes ulike operatører på en streng og ulike operasjoner utføres. Den første setningen kopierer ett strengobjekt til et annet strengobjekt. I den andre setningen er to strengene sammenkuttet og lagret i en tredje streng. I den tredje setningen sammenlignes to streng. I den fjerde setningen opprettes et nytt strengobjekt ved hjelp av det allerede eksisterende strengobjektet.

Tilgang til strengen er sakte i forhold til et tegnfelt eller nullterminert streng.

Nøkkelforskjeller mellom tegnfelt og streng

  1. Et tegnsett er en samling av variabler som er av tegndatatype. String er en klasse som er instantiated å erklære strenge.
  2. Ved hjelp av 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 hjelp av funksjonsstrengens navn.charAt (indeks).
  3. Ettersom et array ikke er datatype, er et tegn heller ikke en datatype. På den annen side, String er en klasse opptre som en referansetype, derfor kan det sies String er en datatype.
  4. Du kan ikke bruke noen operatør på en tegnet array, mens du kan søke operatører på String.
  5. Å være en array karakter array har en fast lengde og grensene kan enkelt overkjøres. Hvor String har ingen grenser.
  6. Array-elementer lagres i et sammenhengende minnessted, som kan nås raskere enn strengvariabel.

Konklusjon:

Manglende evne til å operere på tegnserien økte utviklingen av standardstrengklassen.

Top