Mezei tanár számítástechnika és az IKT - az első sorban c, és a karakter tömbök
Vonósok a C ++ és a karakter tömbök
Vonalak dolgozunk szinte mindenki a programot, és hogy ezt a leckét. Pontosabban string állandók - karaktersor idézőjelek. Gyakran kellett megjeleníteni bizonyos információkat. Például:
Szöveg idézőjelben egy szöveg konstans. Idézőjelek használják, hogy meghatározzák a kezdetét és végét egy string konstans és részben nem.
Tehát az első: a C ++ tárolására húrt karakter tömbök. Ez ugyanaz a tömböket már tárgyalt a cikket tömbök C ++, de nem tárolja a numerikus adatokat, és a karakter. El lehet képzelni, a karakterek a tömb sorozat szomszédos memória sejtek - minden sejt üzletek egy szimbólum, és elfoglalja egy bájt. Egy byte, mert minden eleme a karakter tömb típusú char. Az utolsó karakter minden egyes sor egy szimbólum \ 0 (null karaktert). Például:
Maga a szöveg, a szóközzel, áll 11 karakter. Ha az utolsó cella tetszik. (Point), nem null karakter \ 0 - fordítóprogram már nem egy vonal. És meg kell dolgozni ezzel a különféle karakterek lenne, mint a szokásos sor - írja az egyes sejt külön-külön jelenik meg karakterenként (loop):
#include
using namespace std;
int main ()
setlocale (LC_ALL, "Rus");
A (int i = 0; i <12; i++) Kijelenti sorban oly módon - hozzon létre egy sor char, méret szögletes zárójelben opcionális (ez számít a fordító), az üzemeltető = és írjuk be a kívánt szöveget idézőjelek. Ez azt jelenti, inicializálni egy sor szöveg konstans: int main () char str [] = "egyszer egy kutya"; // '\ 0' implicit cout < Előírja a null karakter nem szükséges. Jelen van hallgatólagosan és ezt hozzáadjuk minden húr állandó automatikusan. Így annak ellenére, hogy azt látjuk, 11 karakter soronként, a tömb mérete 12, mint a \ 0 karaktert, és elfoglalja egy bájtot. Elveszi az utolsó cella a karakter tömbben. Mint látható, a kimenet a képernyőn elég megszólítani megnevezés: cout < Szeretném felhívni a figyelmet, hogy a különbség a karakter konstans (ezen belül egyetlen idézetek -. „F” „@”) egy karakterlánc konstans ( „f” idézőjelek „@”.). Az első, C ++ fordító van allokálva egy byte tárolására memóriában. A rögzített karakter idézőjel, két byte kerül kiosztásra a memóriát - a saját és a zéró jel (hozzá a fordító). Mi van, ha a vonal figyelmezteti a felhasználót a billentyűzet? Ebben az esetben szükség van egy tömböt típusú char jelzi méretének megfelelő tárolására a bemeneti karakter, beleértve a \ 0. Ne felejtsük el, hogy a null karaktert. Ha kell tárolni a 3 karakter a tömbben, a mérete legyen az egyik nagyobb - azaz 4. using namespace std; Beszéljen üzembe a sorokat a billentyűzet részletesen. Az a tény, hogy vannak problémák, hogy tisztában legyenek, és hogy meg kell tanulni kezelni. Az alábbi program nem olyan sima vonalat, amikor belép, ahogy mi akarjuk: #include int main () char idézet [128] = ""; cout <<"Ваша любимая цитата из мультфильма "Винни Пух": "; Ez a probléma egyszerűen megoldható. A C ++, vannak funkciók get () és getline (). hogy tudjuk használni a cin. Ezek hasonlóak, de gyakrabban használják getline (). Ebben a cikkben, azt nem tekintjük a különbség közöttük. Töltse ki a programot bemenet getline (): int main () char idézet [128] = ""; cout <<"Ваша любимая цитата из мультфильма "Винни Пух": \n";
cout <
cout <
Szerencsére, C ++ van egy sokkal kényelmesebb módon inicializálni és a hozzáférést a karakter tömbök - szálakat. Ehhez az utolsó karaktert a tömb legyen null karakter \ 0. Ő az, aki teszi a karakterkészlet karakterlánc dolgozni, ami sokkal egyszerűbb, mint egy sor karakter.
#include
using namespace std;
setlocale (LC_ALL, "Rus");
Segítségével üres idézetek inicializálás, hozzárendelünk egy értéket minden egyes eleme a tömb \ 0. Így a sor törlődik a „szemetet” más programok. Még ha a felhasználó beír egy nevet tartalmazó kevesebb karakter neve után egy \ 0. Ezzel elkerülhető a felesleges hibákat. Ennek emlékére vonal nézne ki:
Mellesleg, ha azt feltételezzük, felülírja a 11-edik cella a tömb - Str [11] = „\ 0”;
és megjelenik egy tömb a képernyőn látjuk csak purecodecpp annak ellenére, hogy a sejtek 12, 13, 14 karakter tárolták. Nullkarakteres fog jelentős szerepet játszanak abban, hogy a képernyőre, és minden, ami nem jelenik meg.
using namespace std;
setlocale (LC_ALL, "Rus");
cin >> idézet;
cout <
Ne fáradj még mit bemenet cin kell végezni latinul. Körülbelül hogyan kell helyesen bevezetni a cirill ábécé lesz szó egy külön cikket. Itt láthatjuk, hogy az idézetet vezettünk be, de a kimenet a képernyőn látjuk csak az első szót. Ez annak a ténynek köszönhető, hogy nem adja meg a null karaktert a billentyűzeten, de cin érzékeli a teret, új sor vagy lap, mint az a sor végére. Ez azt jelenti, ebben az esetben, CIN olvassa csak az első szó, a vessző és a hozzáadott automatikusan bejegyzi a sor végére. A többi bejegyzés kerül a beviteli sorban.
#include
using namespace std;
setlocale (LC_ALL, "Rus");
cin.getline (idézet, 128); // át a függvény neve a tömb mérete
cout <
Láthatjuk, hogy az általunk zárójelben a két érv funkció - az, hogy mi tekinthető jelképe array (array neve) és a tömb méretét - egy sor 11. Az eredmény megfelel számunkra - minden helyesen jelennek meg. cin.getline () beolvassa az egész sort a tömbben beleértve terek és lapok, amíg egy Enter megnyomásával, vagy addig, amíg a tömb mérete meghaladja. újsor karaktert a tömb nem kerül mentésre, és helyébe egy null karakter.Kapcsolódó cikkek