Ajánlott, 2024

Szerkesztő Választása

A karakterkészlet és a karakterlánc közötti különbség

A C ++ mind a Character array, mind a string karaktereket támogatja, mivel a C ++ jelentős előnyökkel rendelkezik mindkettő használatakor. De a karakteres tömbön való működésképtelenség növeli az osztály karakterlánc fejlesztését. A karakterek és a karakterláncok egyaránt tartalmazzák a karakterek sorrendjét. A karakterlánc és a karakterlánc közötti alapvető különbség azonban az, hogy a „karakterlánc” nem használható normál operátorokkal, míg a „karakterlánc” objektumok szabványos operátorokkal működtethetők. Vizsgáljuk meg a karaktertömb és a karakterlánc közötti különbségeket.

Összehasonlító táblázat

Az összehasonlítás alapjaKaraktersorozatHúr
AlapvetőA karaktercsoport a változók gyűjteménye, a karakteradatok típusa.A karakterlánc az osztály, és a karakterlánc változói a "string" osztály tárgyát képezik.
Szintaxischar array_name [méret];string string_name;
Az indexelésEgy karakter tömb egyéni karaktere a tömb indexén keresztül érhető el.A karakterláncban az adott karakter a "string_name.charAt (index)" függvénnyel érhető el.
AdattípusA karakter tömb nem határoz meg adattípust.Egy karakterlánc egy adattípust határoz meg a C ++-ban.
Az üzemeltetőkA C ++ operátorok nem használhatók karaktertömbre.Alkalmazhat szabványos C ++ operátort a karakterláncon.
HatárAz array határok könnyen túlterhelhetők.A határok nem lépnek túl.
HozzáférésGyors hozzáférés.Lassú hozzáférés.


Karakterek meghatározása

A karakter tömb a „char” adattípus változóinak gyűjteménye; lehet egydimenziós tömb vagy kétdimenziós tömb. Ezt a „null terminált string” -nek is nevezik. A Karaktersorozat az egymást követő memóriacímekben tárolt karakterek sorozata. Egy karakter tömbben egy adott karakter elérheti az indexét. A „Null karakter” befejezi a karaktercsoportot ”.

Vegyünk egy példát a karakter tömbre: -

 char name [] = {'A', 'j', 'a', 'y', '0'}; vagy char név [] = "Ajay"; 

Itt a „char” egy karakteradat-típus, a „név” a karaktercsoport változó neve. Két módot mutattam be a karaktercsoport inicializálására. Az első módszerben a null kifejezetten meg van említve, és a második módszerben a fordító automatikusan beilleszti a nullot.

A karakterlánc vége mindig null karakter; ez a karakter tömb végző karaktere. A karakter tömb nem beépített adattípus; karaktert tömböt hozunk létre annak bejelentésével. Nem használhat szabványos operátorokat egy karaktercsoporton. A karakter tömb működéséhez van néhány beépített funkció, mint például (strlen (), strlwr (), strupr (), strcat (). Mivel a szabványos operátorok nem alkalmazhatók karaktertömbre, nem vehetnek részt semmilyen kifejezésben.

A karaktercsoporthoz tartozó karaktermutató is létrehozható.

Megértjük egy példával.

 char s1 [] = "Hello"; char s2 [] = "Sir"; s1 = s1 + s2; // hibaüzenet nem alkalmazható s2 = s1; // hiba Karaktermutató char * s = "Reggel"; char * p; p = s; // végrehajt 

A fenti példában két s1, s2 karaktert és két s és p karaktert mutatunk be. Az s1 és s2 karaktercsoportot inicializáljuk, láthatjuk, hogy sem a hozzáadott operátor (+), sem a hozzárendelési operátor nem működik a karaktercsoporton. De egy karaktermutató hozzárendelhető egy másik karaktermutatóhoz.

Ne feledje, hogy miután a karaktercsoportot inicializálták, nem lehet újra inicializálni egy másik karakterkészletet. A karakterlánchoz vagy egy null végű karakterlánchoz való hozzáférés gyors a C ++ karakterláncához képest.

A karakterlánc meghatározása

A karakterlánc nem beépített C ++ típusú adat. Ez egy „string” típusú objektum. Ahogy a C ++-ban is, az osztály létrehozása éppen olyan, mint egy „típus” létrehozása. A „string” a C ++ könyvtár része. Tartalmazza a karakter vagy karakter tömb egészét. A szabványos karakterlánc-osztály fejlesztésének három oka van.

  • Először „következetesség”, a karakter tömbök önmagukban nem adattípusok.
  • Másodszor a „kényelem”, nem használhatsz szabványos operátorokat egy karaktercsoporton.
  • Harmadszor a „biztonság”, a tömbhatárok könnyen túlterhelhetők.

Tegyük meg a sztringeket egy példával.

 string s1; s1 = "Hello"; string s2 ("Jó reggelt"); string s3 = "Hennery"; s4 karakterlánc; 

A fenti nyilatkozatban négy karakterláncváltozót vagy objektumot (s1, s2, s3, s4) deklarálunk. A fenti nyilatkozatban három módot mutattam be a string inicializálására. Az s1 karakterláncot deklaráljuk, majd külön-külön inicializáljuk. Az s2 karakterláncot a „String” osztály konstruktora inicializálja. Az s3 karakterlánc a deklaráció időpontjában inicializálódik, mint a normál adattípus. A szabványos operátort a karakterlánc változókra alkalmazhatjuk.

 s4 = s1; // egy string objektum hozzárendelése más s4-hez = s1 + s2; // két karakterlánc hozzáadása és az eredmény tárolása harmadik karakterláncban, ha (s3> s2) // két sztringsztring s5 (s1) összehasonlítása; új karakterláncobjektum létrehozása a meglévő string objektum használatával 

A fenti kódban különböző operátorokat alkalmaznak egy karakterláncra, és különböző műveleteket hajtanak végre. Az első utasítás egy string objektumot más string objektumra másol. A második állításban két karakterláncot összekapcsolnak és egy harmadik karakterláncban tárolnak. A harmadik állításban két karakterláncot hasonlítunk össze. A negyedik állításban egy új string objektumot hoz létre a már létező karakterláncobjektum használatával.

A karakterlánchoz való hozzáférés lassú, mint a karakterlánc vagy a null terminált karakterlánc.

A karakterek és a karakterlánc közötti különbségek

  1. A karakterlánc olyan változók gyűjteménye, amelyek karakteres adattípusok. A karakterlánc egy olyan osztály, amely a karakterláncok deklarálására szolgál.
  2. Az indexérték használatával egy karakter tömbből érhető el. Másrészről, ha egy karakterlánchoz szeretne hozzáférni egy karakterhez, elérheti a függvény string_neve.charAt (index) függvényében.
  3. Mivel egy tömb nem adattípus, a karakter szintén nem adattípus. Másrészről, a String, mint egy osztály, referencia típusként működik, így azt mondhatjuk, hogy a String egy adattípus.
  4. A karakterláncot nem használhatja egyetlen operátorra sem, míg az operátorokat a String alkalmazásban alkalmazhatja.
  5. A tömb karakter tömbök rögzített hosszúságúak, és határai könnyen felülbírálhatók. Ahol a String nem rendelkezik határokkal.
  6. A tömbelemek egymás melletti memóriahelyen tárolódnak, így gyorsabban érhetők el, mint a karakterlánc változó.

Következtetés:

A karakterlánc működésének elmulasztása növelte a szabványos karakterlánc-osztály fejlődését.

Top