Forskel mellem karakteropstilling og streng

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 6 Kan 2024
Anonim
Forskel mellem karakteropstilling og streng - Teknologi
Forskel mellem karakteropstilling og streng - Teknologi

Indhold


C ++ understøtter begge, Tegnarray og streng, da C ++ har betydelige fordele ved at bruge dem begge. Men manglende evne til at arbejde på karaktergruppe rejser udviklingen af ​​klassestreng. Både et karakterarray og en streng indeholder sekvensen med tegn. Men den grundlæggende forskel mellem karakterarray og streng er, at “karakterarray” ikke kan betjenes med standardoperatører, mens “streng” -objekterne kan betjenes med standardoperatører. Lad os undersøge de andre forskelle mellem en karaktergruppe og streng.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningKarakter ArraySnor
GrundlæggendeTegnarray er samling af variabler af karakterdatatype.Streng er klasse, og variabler af streng er genstand for klasse "streng".
Syntakschar array_name;streng string_name;
IndekseringEt individuelt tegn i et tegnsæt kan fås ved hjælp af dets indeks i array.I streng kan det særlige tegn fås adgang til funktionen "string_name.charAt (index)".
DatatypeEn karaktergruppe definerer ikke en datatype.En streng definerer en datatype i C ++.
OperatørerOperatører i C ++ kan ikke anvendes på karakter array.Du kan anvende standard C ++ operator på strengen.
GrænseArraygrænser overskrides let.Grænser overskrides ikke.
AdgangHurtig adgang.Langsom adgang.


Definition af karakter array


Et karakter array er en samling af variablerne i "char" datatype; det kan være en en-dimensionel matrix eller en to-dimensionel array. Det kaldes også "null-termineret streng". En karaktergruppe er en sekvens af de tegn, der gemmes i fortløbende hukommelsesadresser. I et tegnsæt kan man få adgang til et bestemt tegn ved hjælp af dets indeks. En "Null karakter" afslutter tegnserien ".

Lad os tage et eksempel på karakter array: -

char navn = {A, j, a, y, 0}; eller char navn = "Ajay";

Her er "char" en karakterdatatype, "name" er et variabelt navn på tegnearrayet. Jeg havde vist to måder at initialisere karaktersætningen på. I den første metode nævnes nulet eksplicit, og i den anden metode indsætter compileren automatisk nullen.


Slutningen af ​​strengen er altid et nulltegn; det er den afsluttende karakter i karaktergruppen. En karaktergruppe er ikke en indbygget datatype; vi skaber karakter array ved at erklære det. Du kan ikke anvende standardoperatører på et tegnsæt. For at betjene på karakter array er der nogle indbyggede funktioner såsom, (strlen (), strlwr (), strupr (), strcat ()). Da standardoperatørerne ikke kan anvendes til en karaktergruppe, kan de ikke deltage i noget udtryk.

Tegnpekeren til en karaktergruppe 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; // error Character pointer char * s = "Morgen"; char * p; p = s; // henretter

I ovenstående eksempel havde vi erklæret to karakter array s1, s2 og to character pointers s og p. Tegnarray s1 og s2 er initialiseret, vi kan se, at hverken additionsoperatøren (+) eller tildelingsoperatøren fungerer på karakterarray. Men en tegnmarkør kan tildeles en anden tegnmarkør.

Husk, når tegneserien er initialiseret, kan den ikke initialiseres igen til et andet sæt tegn. Adgangen til en karaktergruppe eller en null-afsluttet streng er hurtig sammenlignet med streng i C ++.

Definition af streng

En streng er ikke en indbygget datatype C ++. Det er et klasseobjekt af typen “streng”. Som i C ++ er det at oprette en klasse ligesom at oprette en “type”. Klassen “streng” er en del af C ++ bibliotek. Det indeholder sæt af tegn eller karakter array som en helhed. Der er tre grunde bag udviklingen af ​​en standard strengklasse.

  • Først er "konsistens", karaktergrupperne er ikke datatyper i sig selv.
  • Anden er "bekvemmelighed", kan du ikke bruge standardoperatører på et tegnsæt.
  • Tredje er "sikkerhed", arraygrænser overskrides let.

Lad os forstå strengene med et eksempel.

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

I ovenstående deklaration deklareres fire strengvariabler eller -objekter (s1, s2, s3, s4). I ovenstående erklæring havde jeg vist tre måder at initialisere strengen på. Strengen s1 deklareres og initialiseres derefter separat. Strengen s2 initialiseres af konstruktøren af ​​klassen “String”. Strengen s3 initialiseres på tidspunktet for dens erklæring, som normal datatype gør. Vi kan anvende standardoperatoren til strengvariablerne.

s4 = s1; // tildeling af et strengobjekt til andre s4 = s1 + s2; // tilføjelse af to strenge og lagring af resultatet i tredje streng, hvis (s3> s2) // sammenligning af to strengestrenge s5 (s1); oprette 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 samles to strenge og gemmes i en tredje streng. I den tredje sætning sammenlignes to strenge. I den fjerde sætning oprettes et nyt strengobjekt ved hjælp af det allerede eksisterende strengobjekt.

Adgangen til strengen er langsom sammenlignet med en karaktergruppe eller en null-afsluttet streng.

Vigtige forskelle mellem karakteropstilling og streng

  1. Et karakter array er en samling af variabler, der er af karakter datatype. String er en klasse, der er instantieret til at erklære strenge.
  2. Ved hjælp af indeksværdi kan du få adgang til et tegn fra et tegnsæt. På den anden side, hvis du vil have adgang til et bestemt tegn i en streng, kan du få adgang til det ved funktionstrengens_navn.charAt (indeks).
  3. Da en matrix ikke er en datatype på lignende måde, er en karakter heller ikke en datatype. På den anden side, hvor streng er en klassegang som en referencetype, kan det siges, at streng er en datatype.
  4. Du kan ikke anvende nogen operatør på et tegnsæt, mens du kan anvende operatører på streng.
  5. At være en array-karakter array har en fast længde, og dens grænser kan let overskrides. Hvor streng ikke har nogen grænser.
  6. Arrayelementer gemmes i en sammenhængende hukommelsesplacering, hvorved der er hurtigere adgang til end strengvariablen.

Konklusion:

Manglende evne til at arbejde på karakter array rejste udviklingen af ​​standard strengklasse.