Verschil tussen tekenreeks en tekenreeks

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 6 Kunnen 2024
Anonim
Difference between String and string
Video: Difference between String and string

Inhoud


C ++ ondersteunt beide, Tekenserie en tekenreeks, omdat C ++ aanzienlijke voordelen biedt bij het gebruik van beide. Maar het onvermogen om te werken op character array verhoogt de ontwikkeling van de klasse string. Zowel een tekenreeks als een tekenreeks bevatten de reeks tekens. Maar het fundamentele verschil tussen character array en string is dat de "character array" niet kan worden bediend met standaardoperators, terwijl de "string" -objecten kunnen worden bediend met standaardoperators. Laten we de andere verschillen tussen een reeks tekens en een tekenreeks bestuderen.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingCharacter ArrayDraad
basis-Character array is een verzameling variabelen, van het karaktergegevenstype.String is klasse en variabelen van string zijn het object van klasse "string".
Syntaxischar array_name;string string_name;
IndexerenEen individueel karakter in een character array kan worden benaderd door zijn index in array.In tekenreeksen is het specifieke teken toegankelijk via de functie "stringnaam.charAt (index)".
Data typeEen tekenset definieert geen gegevenstype.Een tekenreeks definieert een gegevenstype in C ++.
operatorsOperators in C ++ kunnen niet worden toegepast op character array.U kunt de standaard C ++ -operator op de tekenreeks toepassen.
GrensMatrixgrenzen worden gemakkelijk overschreden.Grenzen worden niet overschreden.
ToegangSnelle toegang.Langzame toegang.


Definitie van Character Array


Een character array is een verzameling van de variabelen van het "char" -datatype; het kan een eendimensionale reeks of een tweedimensionale reeks zijn. Het wordt ook wel "null terminated string" genoemd. Een tekenreeks is een reeks tekens die worden opgeslagen in opeenvolgende geheugenadressen. In een character array kan een bepaald karakter worden benaderd door zijn index. Een "Null character" beëindigt de character array ".

Laten we een voorbeeld nemen van de karaktermatrix: -

char name = {A, j, a, y, 0}; of char name = "Ajay";

Hier is "char" een karaktergegevenstype, "name" is een variabelenaam van de character array. Ik had twee manieren getoond om de character array te initialiseren. In de eerste methode wordt de nul expliciet genoemd en in de tweede methode voegt de compiler automatisch de nul in.


Het einde van de string is altijd een nul-teken; het is het terminerende karakter van de character array. Een character array is geen ingebouwd gegevenstype; we maken character array door het aan te geven. U kunt geen standaardoperators toepassen op een tekenreeks. Om te werken met character array zijn er enkele ingebouwde functies zoals, (strlen (), strlwr (), strupr (), strcat ()). Aangezien de standaardoperators niet kunnen worden toegepast op een tekenreeks, kunnen ze niet deelnemen aan een expressie.

De karakterpointer naar een character array kan ook worden gemaakt.

Laten we het begrijpen met een voorbeeld.

char s1 = "Hallo"; char s2 = "Sir"; s1 = s1 + s2; // error operators kunnen niet worden toegepast s2 = s1; // error Character pointer char * s = "Morning"; char * p; p = s; // uitvoert

In het bovenstaande voorbeeld hadden we twee character array s1, s2 en twee character pointers s en p verklaard. Character array s1 en s2 zijn geïnitialiseerd, we kunnen zien dat noch de operator operator (+) noch de operator voor toewijzing op de character array werkt. Maar een karakterwijzer kan aan een andere karakterwijzer worden toegewezen.

Onthoud dat zodra de character array is geïnitialiseerd, deze niet opnieuw kan worden geïnitialiseerd naar een andere set tekens. De toegang tot een tekenreeks of een tekenreeks met null-beëindiging is snel in vergelijking met een tekenreeks in C ++.

Definitie van String

Een string is geen ingebouwd gegevenstype van C ++. Het is een klasseobject van het type "string". Net als in C ++ is het maken van een klasse hetzelfde als het maken van een "type". De klasse "string" is een onderdeel van de C ++ -bibliotheek. Het bevat de reeks tekens of tekens als een geheel. Er zijn drie redenen voor de ontwikkeling van een standaard stringklasse.

  • Eerste is "consistentie", de karaktermatrixen zijn op zichzelf geen gegevenstypen.
  • Tweede is "gemak", u kunt geen standaardoperators op een character array gebruiken.
  • Derde is "veiligheid", worden arraygrenzen gemakkelijk overschreden.

Laten we snaren begrijpen met een voorbeeld.

string s1; s1 = "Hallo"; string s2 ("Goedemorgen"); string s3 = "Hennery"; string s4;

In de bovenstaande verklaring worden vier stringvariabele of objecten (s1, s2, s3, s4) gedeclareerd. In bovenstaande verklaring had ik drie manieren getoond om de string te initialiseren. De tekenreeks s1 wordt gedeclareerd en vervolgens afzonderlijk geïnitialiseerd. De tekenreeks s2 wordt geïnitialiseerd door de constructor van de klasse "String". De tekenreeks s3 wordt geïnitialiseerd op het moment van verklaring zoals normaal gegevenstype. We kunnen de standaardoperator toepassen op de tekenreeksvariabelen.

s4 = s1; // één stringobject toewijzen aan andere s4 = s1 + s2; // het toevoegen van twee reeksen en het opslaan van het resultaat in de derde reeks als (s3> s2) // het vergelijken van twee reeksen reeksen s5 (s1); een nieuw stringobject maken met behulp van een bestaand stringobject

In bovenstaande code worden verschillende operatoren op een string toegepast en worden verschillende bewerkingen uitgevoerd. De eerste instructie kopieert een stringobject naar een ander stringobject. In de tweede instructie worden twee tekenreeksen samengevoegd en opgeslagen in een derde tekenreeks. In de derde verklaring worden twee reeksen vergeleken. In de vierde instructie wordt een nieuw stringobject gemaakt met behulp van het reeds bestaande stringobject.

Toegang tot de tekenreeks is traag in vergelijking met een tekenreeks of een tekenreeks met null-einde.

Belangrijkste verschillen tussen tekenreeks en tekenreeks

  1. Een character array is een verzameling variabelen die van het datatype zijn. String is een klasse die wordt gestart om tekenreeksen aan te geven.
  2. Met behulp van de indexwaarde hebt u toegang tot een teken uit een tekenreeks. Aan de andere kant, als u toegang wilt krijgen tot een bepaald teken in een string, kunt u dit openen door de functie string's_name.charAt (index).
  3. Omdat een array geen gegevenstype is, is een teken ook geen gegevenstype. Aan de andere kant, omdat String een klasse is, fungeert als een referentietype, kan dus worden gezegd dat String een gegevenstype is.
  4. U kunt geen enkele operator op een character array toepassen, terwijl u wel operators op String kunt toepassen.
  5. Omdat het een array-tekenreeks is, heeft deze een vaste lengte en kunnen de grenzen ervan gemakkelijk worden overschreden. Waar String geen grenzen heeft.
  6. Matrixelementen worden opgeslagen in een aaneengesloten geheugenlocatie, die sneller toegankelijk is dan de tekenreeksvariabele.

Gevolgtrekking:

Het onvermogen om te werken met character array verhoogde de ontwikkeling van de standaard stringklasse.