Anbefalet, 2024

Redaktørens Valg

Forskel mellem tegnrække og streng

C ++ understøtter begge, Character array og string, da C ++ har betydelige fordele ved at bruge begge. Men manglende evne til at operere på karakter array hæver udviklingen af ​​klasse streng. Både et tegnfelt og en streng indeholder sekvensen af ​​tegn. Men den grundlæggende forskel mellem karakter array og streng er, at "tegn array" ikke kan betjenes med standard operatører, mens "string" objekter kan betjenes med standard operatører. Lad os studere de andre forskelle mellem et tegnfelt og en streng.

Sammenligningstabel

Grundlag for sammenligningKarakter ArraySnor
GrundlæggendeTegn array er samling af variabler, af tegn datatype.String er klasse og variabler af streng er genstand for klasse "streng".
Syntakschar array_name [size];streng strengnavn;
IndekseringEn individuel karakter i et tegn array kan fås ved hjælp af sit indeks i array.I streng kan den særlige karakter fås af funktionen "string_name.charAt (index)".
DatatypeEt tegn array definerer ikke en datatype.En streng definerer en datatype i C ++.
OperatørerOperatører i C ++ kan ikke anvendes på tegn array.Du kan anvende standard C ++-operatør på strengen.
GrænseArray grænser er let overskredet.Grænser vil ikke overskride
AdgangHurtig adgang.Langsom adgang.


Definition af tegnrækkefølge

Et tegn array er en samling af variablerne af "char" datatype; det kan være et endimensionelt array eller et todimensionelt array. Det kaldes også "null terminated string". Et tegn array er en sekvens af de tegn, der er gemt i fortløbende hukommelsesadresser. I et tegnefelt kan en bestemt karakter fås af sit indeks. Et "Null-tegn" afslutter tegnsættet ".

Lad os tage et eksempel på tegnet array: -

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

Her er "char" en tegndatatype, "navn" er et variabelt navn på tegnsættet. Jeg havde vist to måder at initialisere tegnsættet. I den første metode nævnes nullen eksplicit og i den anden metode indsætter kompilatoren automatisk nullen.

Slutningen af ​​strengen er altid et null tegn; det er tegnestrukturens afsluttende karakter. Et tegn array er ikke en indbygget datatype; vi opretter karakter array ved at erklære det. Du kan ikke anvende standardoperatører på et tegnfelt. For at operere på tegn array er der nogle indbygget funktion som, (strlen (), strlwr (), strupr (), strcat ()). Da standardoperatørerne ikke kan anvendes på et tegnfelt, kan de ikke deltage i noget udtryk.

Karakterpegeren til et tegnfelt kan også oprettes.

Lad os forstå det med et eksempel.

 char s1 [] = "Hej"; char s2 [] = "Sir"; s1 = s1 + s2; // fejloperatører kan ikke anvendes s2 = s1; // fejl tegnpeger char * s = "morgen"; char * p; p = s; // henretter 

I ovenstående eksempel havde vi erklæret to tegn array s1, s2 og to tegn pointers s og p. Karakteristika s1 og s2 initialiseres, vi kan se, at hverken tillægsoperatøren (+) eller assignment operatoren arbejder på tegnsættet. Men en tegnpeger kan tildeles en anden tegnpeger.

Husk, når tegnsættet er initialiseret, kan det ikke initialiseres igen til et andet sæt tegn. Adgangen til et tegnfelt eller en nulltermineret streng er hurtig i forhold til strengen i C ++.

Definition af streng

En streng er ikke en indbygget datatype af C ++. Det er et klasseobjekt af typen "streng". Som i C ++ oprettes en klasse som om at skabe en "type". Klassen "streng" er en del af C ++ bibliotek. Det indeholder sæt af tegn eller tegn array som en helhed. Der er tre grunde bag udviklingen af ​​en standardstrengklasse.

  • For det første er "konsistens", tegnsætningerne er ikke datatyper i deres egen ret.
  • For det andet er "bekvemmelighed", du kan ikke bruge standardoperatører på et tegnfelt.
  • Tredje er "sikkerhed", array grænser er let overskredet.

Lad os forstå strenge med et eksempel.

 streng s1; s1 = "Hej"; streng s2 ("godmorgen"); streng s3 = "Hennery"; streng s4; 

I ovenstående erklæring er fire strengvariabler eller objekter (s1, s2, s3, s4) deklareret. I ovennævnte erklæring havde jeg vist tre måder at initialisere strengen på. Strengen s1 er erklæret og derefter initialiseret separat. Strengen s2 initialiseres af konstruktøren af ​​klasse "String". Strengen s3 initialiseres på tidspunktet for dens erklæring som normal datatype gør. Vi kan anvende standardoperatøren til strengvariablerne.

 s4 = s1; // tildele en strengobjekt til andre s4 = s1 + s2; // tilføjer to strenger og lagrer resultatet i tredje streng hvis (s3> s2) // sammenligner to strenge strings s5 (s1); Oprettelse af et nyt strengobjekt ved hjælp af eksisterende strengobjekt 

I ovenstående kode anvendes forskellige operatører på en streng og forskellige operationer udføres. Den første sætning kopierer et strengobjekt til et andet strengobjekt. I den anden sætning sammenkædes to strenger og lagres i en tredje streng. I den tredje sætning sammenlignes to streng. I den fjerde sætning oprettes et nyt strengobjekt ved hjælp af det allerede eksisterende strengobjekt.

Adgang til strengen er langsom i forhold til en tegnrækkefølge eller null termineret streng.

Nøgleforskelle mellem tegnfelt og streng

  1. Et tegn array er en samling af variabler, der er af tegn datatype. String er en klasse, der er instantiated til at erklære strenge.
  2. Ved hjælp af indeksværdi kan du få adgang til et tegn fra et tegnfelt. På den anden side, hvis du vil have adgang til et bestemt tegn i en streng, kan du få adgang til det ved hjælp af funktionstrengeens navn.charAt (indeks).
  3. Da et array ikke er en datatype på samme måde, er et tegn også ikke en datatype. På den anden side, String er en klasse fungere som en referencetype derfor kan man sige String er en datatype.
  4. Du kan ikke anvende en operatør på et tegnfelt, mens du kan anvende operatører på String.
  5. At være et array karakter array har en fast længde, og dens grænser kan nemt overskride. Hvor String ikke har nogen grænser.
  6. Array-elementer gemmes i en sammenhængende hukommelsesplacering, der kan nås hurtigere end strengvariabel.

Konklusion:

Manglende evne til at operere på karakter array hævede udviklingen af ​​standard streng klasse.

Top