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

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 25 rokov. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity



Public Relations

Soulad s normou nemusí znamenat bezpečnost

ALEFNemusíme se vracet daleko do minulosti, aby bylo možné pozorovat IT oddělní velkých společností, jak se soustředí téměř výhradně na efektivitu poskytovaných služeb pro primární účely organizace. Proč také ne? Informační bezpečnost byla výsadou několika málo oborů a většina organizací si vystačila s firewallem a antivirovým programem.

Pokračování ...


IBM POWER

Redakční blog

Pavel Fric

Pavel Fric, 21. August

Sayonara Player 1.5.1

Přehrávač, jak má být. Poslední dobou vývoj šlape


Pavel Fric

Pavel Fric, 26. January

MuseScore 3

První aktualizace třetí řady notačního editoru MuseScore


Redakce

Redakce, 21. December

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Všechny blogy »