Összehasonlító táblázat
Az összehasonlítás alapja | Karaktersorozat | Hú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. |
Szintaxis | char array_name [méret]; | string string_name; |
Az indexelés | Egy 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ípus | A karakter tömb nem határoz meg adattípust. | Egy karakterlánc egy adattípust határoz meg a C ++-ban. |
Az üzemeltetők | A C ++ operátorok nem használhatók karaktertömbre. | Alkalmazhat szabványos C ++ operátort a karakterláncon. |
Határ | Az array határok könnyen túlterhelhetők. | A határok nem lépnek túl. |
Hozzáférés | Gyors 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
- 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.
- 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.
- 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.
- A karakterláncot nem használhatja egyetlen operátorra sem, míg az operátorokat a String alkalmazásban alkalmazhatja.
- 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.
- 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.