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

Linux E X P R E S, Programovanie v jazyku C++: Knižnica string – funkcia insert

Symphera - PM konference

Programovanie v jazyku C++: Knižnica string – funkcia insert

C++

V tomto článku si predstavíme funkciu insert . Zároveň sa naučíte s funkciou insert pracovať a ukážeme si aj rôzne argumenty, ktoré táto funkcia podporuje.


Funkcia insert

Potrebujete niekde v reťazci pridať nejaký znak alebo časť z iného reťazca? Funkcia insert vám to umožní. Okrem toho sa pozrieme aj na ďalšie možností definície argumentov, ktoré nám táto zaujímavá funkcia dovoľuje.

Takže ukážme si prvú syntax, od ktorej sa budú odvíjať tie ďalšie.

Syntax:

retazec.insert(pozicia, retazec1);

Syntax nám hovorí, zober retazec1 a pridaj ho do retazec od nejakej pozície. Ako sa to správa, si ukážeme v prvom príklade.

1. príklad: Zoznamujeme sa s funkciou insert

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string retazec1 = "Svet je naruby!";
    string retazec2 = "";
    retazec2.insert(0, retazec1);

    string retazec3 = "ako sa mas?!";
    string retazec4 = "Ahoj krasko, ";
    retazec4.insert(retazec4.size(), retazec3);
    cout << retazec2 << "\n" << retazec4 << "\n";
    return 0;
}

Výsledok programu Výsledok programu

Rozbor programu:

Takže pri prvom využití funkcie insert dáme ako prvý argument 0, to znamená že začneme pridávať v stringu retazec2 už od začiatku. Ešte aby som vysvetlil fungovanie funkcie insert. Funkcia pridá znaky pred pozíciou, ktorú sme si navolili. To znamená, že keď napíšeme pozíciu 0, tak nezačne pridávať znaky od pozície 1 v reťazci, ale od 0!

V druhom využití funkcie insert použijeme funkciu size, ktorá vráti počet znakov v reťazci. A z tejto pozície začneme naplňovať z retazec3 do retazec4.

Čo sa stane, ak prekročíme v prvom argumente dĺžku reťazca? Vyskúšame si v druhom príklade.

2. príklad: Prekročenie dĺžky reťazca v prvom argumente funkcie insert

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string retazec1 = "Svet je naruby!";
    string retazec2 = "";
    retazec2.insert(1, retazec1);
    return 0;
}

Výsledok programu Výsledok programu

Rozbor programu:

V častí kódu: retazec2.insert(1, retazec1); sme prekročili dĺžku reťazca (správnejšie objektu!) a tak nám to vyhodí výnimku out_of_range. Preto dávajte nato pozor.

Na záver si povieme niečo o ďalších možnostiach argumentov funkcie insert a že ich nie je málo. No budú vám povedomé, pretože niektoré typy argumentov kopírujú už vysvetlené funkcie v tomto minicykle o knižnice string. Tak poďme nato.

3. príklad: Ďalšie možností argumentov pre funkciu insert.

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string retazec1 = "ofpfpv mieri!vki";
    string retazec2 = "Prichadzam ";
    retazec2.insert(retazec2.size(), retazec1, 5, 8);   //prvy sposob
    cout << retazec2 << "\n";

    string retazec3 = "Cina ";
    retazec3.insert(retazec3.size(), "je dnes velmoc!");   //druhy sposob
    cout << retazec3 << "\n";

    string retazec4 = "Obnovitelne zdroje energie";
    retazec4.insert(retazec4.size(), "lss su trendom!", 3, 12);   //treti sposob
    cout << retazec4 << "\n";

    string retazec5 = "Hell";
    retazec5.insert(retazec5.begin()+4, 'o');    //stvrty sposob
    cout << retazec5 << "\n";
    return 0;
}


Výsledok programu Výsledok programu

Rozbor programu:

Postupne si rozoberieme všetkými možnostiami, ktoré sme naprogramovali. Začnime prvou.

1. spôsob:

retazec2.insert(retazec2.size(), retazec1, 5, 8);   //prvy sposob

Prvý a druhý argument by nám mal byť jasný. Pre zopakovanie, prvý argument hovorí niečo o pozícii a druhý argument je samotný reťazec, z ktorého získame znaky a vložíme do druhého reťazca. Tretí argument predstavuje pozíciu ale tentoraz reťazca, z ktorého ideme získavať znaky. Štvrtý argument predstavuje počet znakov od zvolenej pozície v treťom argumente, ktoré sa majú v konečnom dôsledku pridať do druhého reťazca.

2. spôsob:

retazec3.insert(retazec3.size(), "je dnes velmoc!");   //druhy sposob

V druhom spôsobe si povšimnete, že sme nevolali objekt reťazca, ale sami si ho „ručne“ vytvorili.

3. spôsob:

retazec4.insert(retazec4.size(), "lss su trendom!", 3, 12);   //treti sposob

Tretí spôsob je kombinácia prvého a druhého spôsobu.

4. spôsob:

retazec5.insert(retazec5.begin()+4, 'o');    //stvrty sposob

V štvrtom spôsobe využijeme miesto numerického vyjadrenia pozície iterátor. V druhom argumente definujeme znak, ktorý pridáme do reťazca.

Autor používa počas programovania Linux Ubuntu 14.04 LTS

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 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


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


Flowmon Friday 2019

Public Relations

Český startup umožňuje automatické investování

PortuPortu je první online automatizovaná investiční platforma v Česku. Sestaví vám portfolio na míru a vy se nemusíte o nic starat – jen sledovat, jak vaše peníze pracují za vás.

Pokračování ...


Redakční blog

Pavel Fric

Pavel Fric, 26. leden

MuseScore 3

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


Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

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


Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Všechny blogy »

eXo space