A programozók Club - - anyagok Delphi - blog archive - 17. lecke
Írta kulcs alapján c / c ++
Karaktersorozatok tárolt információkat, például a fájl nevét, a könyv címét, nevét, a munkavállalók és más karakter kombinációk. A legtöbb program a C ++ széles körben használják karaktersor. Ezután megtudhatja, hogy a C ++ húrok tároljuk a tömbben tipachar végződő NULL karaktert (ASCII vagy 0). Ebben a leckében a karakterláncok tárgyaljuk részletesebben. Meg fogja tanulni, hogyan kell tárolni és kezelni karakterláncok, valamint azt, hogyan kell használni a könyvtár futásidejű hogy manipulálják karaktersor. Végére ez a lecke, megtudhatja az alábbi alapfogalmakat:
C ++ program tárolása tömbként karakterlánc, mint char.Bolshinstvo programokat széles körben alkalmazzák karaktersor. A kísérlet minden benyújtott programot a bemutató, hogy megismerkedjen a karaktersor. Meg fogja találni, hogy a munka karakterláncokat hasonló tömbök leírtak 16. lecke.
C ++ programozók széles körben használják a húrok tárolására felhasználó, fájlnevek, és más jellegű információkat.
Ábra. 17.1. C ++ kezeli egy karakterláncot egy tömb típusú char.
A fő különbség a karakterláncot és más típusú tömbök, mint a C ++ jelzi az utolsó elem a tömb, Mint már tudjuk, a C ++ programot képviseli a végén egy karakterlánc egy NULL karakter, aki ábrázolják, mint egy speciális karaktert „\ 0” C ++. Amikor hozzárendel szimbólumai karaktersor, meg kell tenni a NULL karaktert ( „\ 0”), miután az utolsó karakterhez. Például az alábbi program ábécé. CPP rendel írni tól Z-ig változó ábécé, egy hurok. Ezután hozzáad egy NULL karakter ebben a változó, és megjeleníti azt a cout.
char ábécé [34]; // 33 karakter plusz NULL char írni;
int index;
a (betű = 'A', index = 0; írni <= ‘Я’;
írni ++, index ++) ábécé [index] = írni;
ábécé [index] = NULL;
cout <<«Буквы » <
Mint látható, a program hozzárendeli a NULL karaktersor, jelezve az utolsó karaktert a szöveg:
Ha a kimeneti áram cout kiad egy karakterlánc, kiadja egy sor karakter, amíg nem találkozik NULL szimbólumot. Röviden, Symbol NULL mondja a program az utolsó karakterhez.
Megjegyzés: a hurok, ami megjelenik az előző program. Mint látható, a ciklus és inicializálja a két változó növekszik (levél, index). Amikor egy hurok inicializálja vagy növeli a változók száma, külön a működési pont (a vessző is C ++ operátor):
a (betű = 'A', index = 0; írni <= ‘Я’; letter++, index++)
C ++ automatikusan hozzáad egy NULL sztring konstansok
Minden létrehozta a programot használja karakterlánc konstansokat zárt idézőjelben, az alábbiak szerint:
„Ez egy szöveg konstans”
Amikor létrehoz egy karakterlánc konstans C ++ fordító automatikusan hozzáad egy NULL karaktert, ábrán látható. 17.2.
Ábra. 17.2. C ++ fordítóprogram automatikusan hozzáad egy NULL karaktert sztring konstansok.
Amikor a program megjeleníti a karakterlánc állandók segítségével a kimeneti stream cout, cout használja a NULL karaktert (amely a fordító növeli a bar), hogy meghatározza a kimenet az utolsó karakter.
A NULL karaktert
Ha egy szöveg konstans idézőjelek, C ++ fordítóprogram automatikusan hozzáadja a NULL karaktert. A legtöbb C ++ függvényeket használja a NULL karaktert, hogy meghatározza az utolsó karaktert a húr.
Következő LOOPNULL.CPP programot kissé megváltoztatja az előző program segítségével a hurok tartalmának megjelenítéséhez a húr:
char ábécé [34]; // 33 karakter plusz NULL char írni;
int index;
a (betű = 'A', index = 0; írni <= ‘Я’; letter++, index++) alphabet[index] = letter;
ábécé [index] = NULL;
az (index = 0; ábécé [index] 1 = NULL; index ++) cout <
Mint látható, az egy ciklus feltárja a karaktereket a húr. Ha a szimbólum nem NULL (nem az utolsó karakter a string), loop nyomatok szimbólum index növekszik, és a folyamat folytatódik.
Mivel „A” eltér az „A”
Az felülvizsgálata programokat C ++, akkor felel meg a karaktereket zárt aposztróf jelet (például „A”) és a karakterek zárt
Ábra. 17.3. Mivel a C ++ fordító tárolja a karakter konstans „A” és egy sor állandó „A”.
dupla idézőjelek ( "A"). Symbol belül aposztróf jelet egy karakter konstans. C ++ fordító bocsát ki csak egyetlen byte memória egy karakter konstans. Azonban karakter idézőjelek karakterlánc konstans -ukazanny szimbólum közötti NULL (hozzá a fordító). Így a fordító osztja két byte egy karakterlánc. Ábra szemlélteti, hogyan 17.3 C ++ fordító tárolja a karakter konstans „A” és egy sor állandó „A”.
Inicializálása karakterlánc
char cím [64] = "Tanulás programozni C ++ nyelven";
char cím [] = «tanulás program C ++ nyelven";
char cím [64] = "Tanulás programozni C ++ nyelven";
char tanulsága [64] = "karaktersorozatok";
cout <<«Книга: » <
Néhány program a többi könyv inicializálja karaktersorainak hasonló módon. Vegyünk egy kis időt, hogy kísérletezzenek a program megváltoztatja a karakter az egyes vonalon.
Távvezetékek FÜGGVÉNYÉBEN
Az átviteli függvény a karakterlánc az átviteli bármilyen hasonló tömb paraméterként. Bent a funkció csak meg kell adnia, hogy milyen a tömb (char) és a bal és a jobb oldali zárójelben a tömbben. Nem kell, hogy meghatározza a méret a húr. Például a következő program a SHOW_STR.CPP show_ sztring függvény, hogy megjelenítse a karakterlánc a képernyőn:
void show_string (char string [])
cout <
show_string ( «Helló, C ++!»);
show_string ( «tanulmányi program C ++»);
>
Mint látható, show_string funkció értelmezi a paraméter karakterláncot egy tömb:
void show_string (char string [])
Mivel a NULL szimbólum azt jelzi, a végén a húr, a funkció nem igényel semmilyen paraméter, amely meghatározza az elemek száma a tömbben. Ehelyett a funkció határozza meg az utolsó elem a tömbben csak találni egy NULL karaktert.
Mint azt már tudja a C ++ függvények gyakran használják a NULL karaktert, hogy meghatározza a sor végére. Következő STR_LEN.CPP teremt nevű függvény STRING_LENGTH, aki keres egy NULL karakterhez, hogy meghatározza a karakterek számát tartalmazza a húr. Ezután a függvény visszatérési nyilatkozat, hogy visszatérjen a sor, hogy hívja a funkció hosszát. A program továbbítja különböző karakterláncok a funkció megjeleníti a hossza egyenként őket a képernyőn:
int STRING_LENGTH (char string [])
int i;
for (i = 0 ;! string [] = '\ 0'; i ++); // semmi köze, de megy
// a következő karakter visszatérő (i); A vonal hossza
>
char cím [] = «tanulás program C ++ nyelven";
char tanulsága [] = «karaktersorozatok";
cout <<«Строка » <
Mint látható, a funkció indul az első karakter a string (elem 0), majd megvizsgálja az egyes elemek akár, amíg nem találkozik NULL. Figyelembe véve a program C ++, akkor a találkozás különböző funkciók, amelyek szintén böngészi karakterláncok a keresést egy NULL karaktert.
Előnye, hogy a NULL egy ASCII 0
Mint már tudjuk, NULL karakter az ASCII 0. 7. lecke tanult, hogy a C ++ használja a 0 érték képviseletére hamis. Így mivel a NULL karakter 0, akkor a program egyszerűsítését sok művelet során. Például számos funkciót böngészi húrok karakterenként NULL keresést. A következő lépés a hurok szemlélteti, hogy egy program lehet keresni NULL sorban:
az (index = 0; string [index] = NULL ;! index ++)
Mivel NULL karakter 0, a program leegyszerűsíti sok ciklus, hogy a keresett NULL, az alábbiak szerint:
az (index = 0; string [index]; index ++);
Ebben az esetben, amíg a szimbólum szerepel a string [index] nem NULL (0 vagy hamis), a ciklus folytatódik.
A string függvénykönyvtár színpadi
Óráról 11, megtanulta, hogy a legtöbb C ++ fordítók széles körben használható funkciók, az úgynevezett futásidejű könyvtár. Figyelembe véve a futásidejű könyvtár, azt találjuk, hogy tartalmaz egy csomó különböző funkciókat, manipulálni húrok. Például, strupr függvény egy karakterlánc nagybetűs karakterlánc. Hasonlóképpen, strlen függvény karakterek száma soronként. A legtöbb könyvtár futásidejű még olyan funkciókat, amelyek lehetővé teszik, hogy megtekintsük a vonal a keresést egy adott karaktert. Például az alábbi program használatát szemlélteti STRUPR.CPP strupr strlwr funkciók és futásidejű könyvtárak:
#include
// funkciók strupr és strlwr
void main (void)
char cím [] = «tanulás program C ++ nyelven";
char tanulsága [] = «karaktersorozatok";
cout <<«Верхний регистр: » <
A használata könyvtári funkciók manipulálni húrok mentheti meg a szükséges időt programozás. Válassza ki az időt, hogy nyomtassa ki a fájl fejlécében, hogy meghatározzuk string.h húr képességeivel által támogatott egy könyvtárban a fordító.
Meg kell játszani a szabályokat
Mint tudod, a legtöbb funkció, hogy manipulálják húrok támaszkodnak NULL karaktert a sor végére. Ha a program van rendelve egy karakterlánc, amelyet győződjön meg arról, hogy adjunk egy NULL karaktert, mint az utolsó karakter a húr. Ha a program nem használja NULL adott esetben a funkciók támaszkodnak a NULL karakter kóbor.