Skillnad mellan karaktärsuppsättning och sträng

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 6 Maj 2024
Anonim
Skillnad mellan karaktärsuppsättning och sträng - Teknologi
Skillnad mellan karaktärsuppsättning och sträng - Teknologi

Innehåll


C ++ stöder båda, Teckenuppsättning och sträng, eftersom C ++ har betydande fördelar med att använda båda. Men oförmågan att arbeta med karaktärsuppsats ökar utvecklingen av klasssträng. Både en teckenuppsättning och en sträng innehåller sekvensen med tecken. Men den grundläggande skillnaden mellan teckenfält och sträng är att "teckenuppsättningen" inte kan hanteras med standardoperatörer, medan "sträng" -objekten kan drivas med standardoperatörer. Låt oss studera de andra skillnaderna mellan en karaktärsuppsättning och en sträng.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseKaraktär ArraySträng
GrundläggandeTeckenuppsättning är samling av variabler, av teckendatatyp.Sträng är klass och variabler för sträng är objektet för klass "sträng".
Syntaxchar array_name;string string_name;
indexeringEn individuell karaktär i en karaktär array kan nås genom dess index i array.I strängen kan det specifika tecknet 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å teckenfält.Du kan tillämpa standard C ++ -operatör på strängen.
BoundaryArraygränser överskrids lätt.Gränser kommer inte att överskridas.
TillgångSnabb åtkomst.Långsam åtkomst.


Definition av karaktär array


En teckenuppsättning är en samling av variablerna i "char" -datatyp; det kan vara en endimensionell matris eller en tvådimensionell matris. Det kallas också "noll avslutad sträng". En teckenuppsättning är en sekvens av tecknen som lagras i pågående minnesadresser. I en teckenuppsättning kan ett visst tecken nås med dess index. En "noll karaktär" avslutar teckens array ".

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

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

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


Slutet på strängen är alltid ett nolltecken; det är den avslutande karaktären i karaktärsuppsättningen. En teckenuppsättning är inte en inbyggd datatyp; vi skapar karaktärsuppsättningar genom att förklara det. Du kan inte tillämpa standardoperatörer på en teckenuppsättning. För att arbeta med teckenuppsättning finns det några inbyggda funktioner som, (strlen (), strlwr (), strupr (), strcat ()). Eftersom standardoperatörerna inte kan tillämpas på en teckenuppsättning kan de inte delta i något uttryck.

Teckenpekaren 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; // error Character pointer char * s = "Morning"; char * p; p = s; // exekverar

I exemplet ovan hade vi förklarat två teckenuppsättningar s1, s2 och två teckenpekare s och p. Teckenfält s1 och s2 initieras, vi kan se att varken tilläggsoperatören (+) eller uppdragsoperatören fungerar på teckenfältet. Men en teckenpekare kan tilldelas en annan teckenpekare.

Kom ihåg när teckenuppsättningen har initialiserats kan den inte initialiseras igen till en annan uppsättning tecken. Tillgången till en teckenuppsättning eller en nollterminerad sträng är snabb jämfört med strängen i C ++.

Definition av sträng

En sträng är inte en inbyggd datatyp C ++. Det är ett klassobjekt av typen "string". Som i C ++ är att skapa en klass precis som att skapa en ”typ”. Klassen "sträng" är en del av C ++ -biblioteket. Den innehåller uppsättningen karaktär eller karaktärsuppsättning som helhet. Det finns tre skäl bakom utvecklingen av en standardsträngklass.

  • Först är "konsistens", karaktärsuppsättningarna är inte datatyper i sig.
  • Andra är "bekvämlighet", du kan inte använda standardoperatörer på en teckenuppsättning.
  • Tredje är "säkerhet", matrisgränser överskrids enkelt.

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

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

I ovanstående deklaration deklareras fyra strängvariabler eller objekt (s1, s2, s3, s4). I ovanstående förklaring hade jag visat tre sätt att initialisera strängen. Strängen s1 deklareras och initialiseras sedan separat. Strängen s2 initialiseras av konstruktören av klass "String". Strängen s3 initialiseras vid tidpunkten för deklarationen som normal datatyp gör. Vi kan använda 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äng om (s3> s2) // jämföra två strängar strängar s5 (s1); skapa ett nytt strängobjekt med befintligt strängobjekt

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

Tillträde till strängen är långsam jämfört med en teckenuppsättning eller nollavslutad sträng.

Viktiga skillnader mellan teckenuppsättning och sträng

  1. En teckenuppsättning är en samling variabler som är av teckendatatyp. String är en klass som instanseras för att förklara strängar.
  2. Med indexvärde kan du få åtkomst till ett tecken från en teckenuppsättning. Å andra sidan, om du vill få åtkomst till ett visst tecken i en sträng, kan du få åtkomst till det med funktionens strängnamn.charAt (index).
  3. Eftersom en matris inte är en datatyp på liknande sätt är ett tecken inte heller en datatyp. Å andra sidan, String är en klass handling som en referenstyp, kan det sägas 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-karaktär-array har en fast längd och dess gränser kan lätt överskridas. Där String inte har några gränser.
  6. Arrayelement lagras i en sammanhängande minnesplats där det går att komma åt snabbare än strängvariabeln.

Slutsats:

Oförmåga att arbeta med karaktärsuppsättning ökade utvecklingen av standardsträngklass