přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Knižnica string – konštruktor

Programovanie v jazyku C++: Knižnica string – konštruktor

C++

Ukážeme si, ako rôzne môžete vytvoriť reťazec. Použíjeme pri tom konštruktor, znám y v objektovo-orientovanom programovaní. 


Konštruktor

Reťazce, ktoré inicializujeme s pomocou string knižnice, sú objekty. Objekty sú hlavnou súčasťou objektovo-orientovaného prístupu k programovaniu. Zatiaľ sme sa k tomúto prístupu nedospeli, takže vám stačí vedieť, že konštruktor je pri zrode objektu a poskytne objektu nejaké vlastností. Preto je konštruktor dôležitý, lebo určuje podobu samotného objektu.

Stále sme deklarovali reťazec takto:

string retazec;

Pri tomto deklárovaní získame konštruktor, ktorý nám vyhotoví prázdny reťazec s nulovou dĺžkou. Ak chceme prázdny reťazec deklarovať cez konštruktor s pridaním klasických zátvoriek (), urobíme to takto:

string retazec (""); // prázdny reťazec

1. príklad:

#include <iostream>  // hlavičkové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavna funkcia main
{
    string retazec = "Vstal som a uvidel som na nocnej oblohe Zornicu. Tak volame Venusu ked je viditelna rano!";

    string retazec1 ("");

    retazec1 = retazec;
    cout << retazec1;

    return 0;   // koniec programu
}

Výsledok programu:

Vstal som a uvidel som na nocnej oblohe Zornicu. Tak volame Venusu ked je vidite
lna rano!

Ukážme si v pár príkladoch, čo všetko môžeme napchať do konštruktora.

2. príklad:

#include <iostream>  // hlavičkové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavna funkcia main
{
    string retazec = "Chyba mi jarna rosa rano, po ktorej som chodil bosy. Tak na druhy rok moja mila jar.";
    string retazec1 (retazec);   // 1.spôsob
    cout << retazec1 <<"\n";
    string retazec2 = "Zmizla si z mojho zivota, navzdy kraska. Co uz, zeny su ako vlaky, prichadzaju a odchadzaju :)";
    string retazec3 (retazec2, 33, 6);   // 2.spôsob
    cout << retazec3 <<"\n";
    string retazec4 ("Tento sposob inicializacie uz poznate ;)");   // bez komentára ;) 

    cout << retazec4 << "\n";

    string retazec5 ("Uff ale vonku prsi, este ze k nam nedojde hurikan Irma!", 3);   // 3.spôsob

    cout << retazec5 << "\n";

    string retazec6 = "Zaspal som nudou awh ";
    string retazec7 (7, 'z');   // 4.spôsob

    retazec6 += retazec7;
    cout << retazec6 << "\n";

    string retazec8 (1, 79);   // 5.spôsob
    string retazec9 (9, 111);  // 5.spôsob
    string retazec10 = retazec8 + retazec9 + " prekvapil si ma!";

    cout << retazec10 << "\n";

    string retazec11 = "Najdi magicke slovo a je to coca-cola. Gratulka vyhravas prvu cenu a to listok na film s Angelina Jolie!";
    string retazec12 (retazec11.begin()+ 28, retazec11.begin()+37);   // 6.spôsob

    cout << retazec12;

    return 0;   // koniec programu
}

Výsledok programu:

Chyba mi jarna rosa rano, po ktorej som chodil bosy. Tak na druhy rok moja mila
jar.
kraska
Tento sposob inicializacie uz poznate ;)
Uff
Zaspal som nudou awh zzzzzzz
Oooooooooo prekvapil si ma!
coca-cola

Rozbor programu:

V kóde som pre lepšie vysvetlenie rozdelil spôsoby deklarácie konštruktorov.

1. spôsob: v argumente konštruktora dávame reťazec a jednoducho sa skopíruje do inicializovaného reťazca

2. spôsob: prvý argument je jasný, v druhom argumente dávame pozíciu v reťazci, od ktorej máme záujem kopírovať znaky do nového reťazca. Tretím argumentom definujeme počet znakov, ktoré sa majú skopírovať od zvolenej pozícii v druhom argumente

3. spôsob: prvý argument je vybraný reťazec a druhý argument vyjadruje počet znakov od nultej pozícii, ktoré sa majú skopírovať do nového reťazca

4. spôsob: naplní 7 znakov z

5. spôsob: podobne ako v 4. spôsobe, len znak nedefinujeme klasický, ale ako ASCII kód

6. spôsob: má dočinenia s iterátormi, prvý argument vyjadruje začiatočnú pozíciu a druhý argument konečnú pozíciu.



Nahoru

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz