Rekommenderas, 2024

Redaktionen

Skillnad mellan teckenuppsättning och sträng

C ++ stöder båda, Teckenuppsättning och sträng, eftersom C ++ har stora fördelar med att använda båda. Men oförmåga att fungera på teckenuppsättning ökar utvecklingen av klasssträngen. Både en teckenuppsättning och en sträng innehåller sekvensen av tecken. Men den grundläggande skillnaden mellan teckenuppsättning och sträng är att "teckenuppsättningen" inte kan användas med standardoperatörer, medan "sträng" -objekten kan användas med standardoperatörer. Låt oss studera de andra skillnaderna mellan en teckenuppsättning och en sträng.

Jämförelsediagram

Grunder för jämförelseTeckenuppsättningSträng
GrundläggandeTeckenuppsättning är samling av variabler, av teckendatatyp.String är klass och variabler av sträng är föremål för klassens "sträng".
Syntaxchar array_name [storlek];strängsträngnamn;
indexeringEtt individuellt tecken i en teckenuppsättning kan nås av sitt index i array.I sträng kan den särskilda karaktären nås med funktionen "string_name.charAt (index)".
Data typEn teckenuppsättning definierar inte en datatyp.En sträng definierar en datatyp i C ++.
operatörerOperatörer i C ++ kan inte tillämpas på teckenuppsättning.Du kan använda standard C ++-operatör på strängen.
BoundaryArraygränserna överskrids lätt.Gränserna överskrids inte.
TillgångSnabb åtkomst.Långsam åtkomst.


Definition av teckenuppsättning

En teckenuppsättning är en samling av variablerna av "char" datatyp; det kan vara en endimensionell array eller en tvådimensionell array. Det kallas också "null terminated string". En teckenuppsättning är en sekvens av tecknen som lagras i efterföljande minnesadresser. I en teckenuppsättning kan ett visst tecken nås av dess index. Ett "Null-tecken" avslutar teckenuppsättningen ".

Låt oss ta ett exempel på teckenuppsättning: -

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

Här är "char" en teckendatatyp, "namn" är ett variabelt namn på teckenuppsättningen. Jag hade visat två sätt att initialisera teckenuppsättningen. I den första metoden nämns noll uttryckligen och i den andra metoden sätter kompilatorn automatiskt in nollpunkten.

Strängens ände är alltid en null karaktär; det är karaktärsgruppens avslutande karaktär. En teckenuppsättning är inte en inbyggd datatyp; Vi skapar teckenuppsättning genom att förklara det. Du kan inte tillämpa standardoperatörer på en teckenuppsättning. För att fungera på teckenuppsättning finns det någon inbyggd funktion som, (strlen (), strlwr (), strupr (), strcat ()). Eftersom standardoperatörerna inte kan tillämpas på en teckenuppsättning kan de inte delta i något uttryck.

Teckenmarkören till en teckenuppsättning kan också skapas.

Låt oss förstå det med ett exempel.

 char s1 [] = "Hej"; char s2 [] = "Sir"; s1 = s1 + s2; // feloperatörer kan inte tillämpas s2 = s1; // fel Teckenpekare char * s = "Morning"; char * p; p = s; // exekverar 

I ovanstående exempel hade vi deklarerat två teckenuppsättningar s1, s2 och två teckenpekare s och p. Teckenuppsättning s1 och s2 initialiseras, vi kan se att varken tilläggsoperatören (+) eller uppdragsoperatören arbetar på teckenuppsättningen. Men en teckenpekare kan tilldelas en annan teckenpekare.

Kom ihåg att när teckenuppsättningen är initialiserad kan den inte initieras igen till en annan uppsättning tecken. Tillgången till en teckenuppsättning eller en nollställd sträng är snabb jämfört med strängen i C ++.

Definition av sträng

En sträng är inte en inbyggd datatyp av C ++. Det är ett klassobjekt av typen "sträng". Som i C ++ skapar en klass precis som att skapa en "typ". Klasssträngen är en del av C ++-biblioteket. Den innehåller uppsättningen tecken eller teckenuppsättning som helhet. Det finns tre skäl till utvecklingen av en standardsträngklass.

  • Först är "konsistens", teckenuppsättningarna är inte datatyper i sig själv.
  • För det andra är "bekvämlighet", du kan inte använda standardoperatörer på en teckenuppsättning.
  • Tredje är "säkerhet", matrisgränserna överskrids lätt.

Låt oss förstå strängar med ett exempel.

 sträng s1; s1 = "Hej"; sträng s2 ("god morgon"); sträng s3 = "Hennery"; sträng s4; 

I ovanstående deklaration deklareras fyra strängvariabler eller objekt (s1, s2, s3, s4). I ovanstående deklaration hade jag visat tre sätt att initialisera strängen. Strängen s1 deklareras och initieras sedan separat. Strängen s2 initieras av konstruktören i klassen "String". Strängen s3 initieras vid tidpunkten för dess deklaration som vanlig datatyp gör. Vi kan tillämpa standardoperatören på strängvariablerna.

 s4 = s1; // tilldela ett strängobjekt till andra s4 = s1 + s2; // lägga till två strängar och lagra resultatet i tredje strängen om (s3> s2) // jämföra två strängsträngar s5 (s1); skapa ett nytt strängobjekt med det befintliga strängobjektet 

I ovanstående kod tillämpas olika operatörer på en sträng och olika operationer utförs. Det första uttalandet kopierar ett strängobjekt till ett annat strängobjekt. I det andra uttalandet sammanfogas två strängar och lagras i en tredje sträng. I det tredje uttalandet jämförs två strängar. I det fjärde uttalandet skapas ett nytt strängobjekt med det redan befintliga strängobjektet.

Tillgång till strängen är långsam i jämförelse med en teckenuppsättning eller nollställd sträng.

Viktiga skillnader mellan karaktärer och strängar

  1. En teckenuppsättning är en samling variabler som är av teckendatatyp. String är en klass som är instansierad för att deklarera strängar.
  2. Med indexvärde kan du komma åt ett tecken från en teckenuppsättning. Å andra sidan, om du vill få åtkomst till ett visst tecken i en sträng, kan du komma åt det med funktionsträngens namn.charAt (index).
  3. Eftersom en matris inte är en datatyp på samma sätt är ett tecken inte en datatyp. Å andra sidan, att String är en klass, fungerar som en referenstyp, så kan man säga String är en datatyp.
  4. Du kan inte tillämpa någon operatör på en teckenuppsättning medan du kan tillämpa operatörer på String.
  5. Att vara en array teckenuppsättning har en fast längd och dess gränser kan enkelt överskridas. Där String har inga gränser.
  6. Array-element lagras i ett angränsande minnesläge, vilket kan nås snabbare än strängvariabler.

Slutsats:

Oförmåga att fungera på teckenuppsättning ökade utvecklingen av standardsträngklassen.

Top