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 replace

Autodesk

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

C++

Nahradiť časť reťazca inou časťou reťazca? V knižnici string sa nachádza funkcia replace, ktorá nám umožní jednoducho nahradzovať reťazce.


reklama

Funkcia replace

Máte reťazec, ale časť z neho potrebujete pohodlne nahradiť inými znakmi? Nato je určená funkcia replace. Samozrejme nie je nutnosťou ju využiť, keďže v minulých dielach sme si ukázali viacero spôsobov nahradzovania reťazcov, no priame využitie funkcie replace ušetrí čas. Na úvod si ukážeme prvý príklad, kde sa zoznámime s funkciou replace aj s jej argumentmi.

1. príklad: Zoznámenie sa s funkciou replace

#include <iostream>   //kniznice
#include <string>
using namespace std;   //priestor mien
int main()   //hlavna funkcia main
{
    string retazec = "Jupiter je krasny!";   //prvy sposob
    retazec.replace(0,7,"Mars");
    cout << retazec << "\n";

    string retazec1 = "Kto bol prvym kozmonautom na Mesiaci?";  //druhy sposob
    string retazec2 = "astronautom";
    retazec1.replace(14,11,retazec2);
    cout << retazec1 << "\n";

    string retazec3 = "Videl si ruzovy Mesiac?";   //treti sposob
    retazec3.replace(9,6,"modry",0,5);
    cout << retazec3 << "\n";

    string retazec4 = "Trava je modra!";  //stvrty sposob
    string retazec5 = "affzelenaefaf";
    retazec4.replace(retazec4.size()-6,5,retazec5,3,6);
    cout << retazec4 << "\n";

    string retazec6 = "Pocul si ma.";   //piaty sposob
    retazec6.replace(retazec6.size()-1,1,3,'?');
    cout << retazec6 << "\n";
    return 0;   //koniec programu
}

Testujeme funkciu replace Testujeme funkciu replace

Rozbor programu:

Rozdelili sme si kód na viacero spôsobov a pre jednotlivé spôsoby si ukážeme syntax a stručné vysvetlenie k tomu.

1. a 2. spôsob:

Začnime prvým a druhým spôsobom. Syntax majú rovnakú, líšia sa len tým, ako deklarujeme reťazec. Syntax vyzerá nasledovne:

retazec.replace(pozícia, počet znakov, reťazec1);

Argumentom pozícia rozumieme počiatočnú pozíciu v reťazci, odkiaľ chceme nahradzovať. Počet znakov nám určí počet znakov v reťazci, ktoré chceme nahradiť od určenej pozície. Argument retazec1 môže byť v tváre definovaného reťazca alebo v tvare mena objektu typu string.

3. a 4. spôsob:

Začiatočné tri argumenty majú rovnakú funkcionalitu ako v prvom a druhom spôsobe. Ale čo štvrtý a piaty argument? Ukážme si syntax:

retazec.replace(pozícia pre retazec, počet znakov pre retazec, retazec1, pozícia pre retazec1, počet znakov pre retazec1);

Takže zo syntaxe môžete vidieť, že štvrtý a piaty argument je rovnaký, len sa vzťahuje na druhý reťazec.

5. spôsob:

Syntax 5. spôsobu je nasledovná:

retazec.replace(pozícia, počet znakov, počet kópii znaku, znak);

Vo štvrtom argumente si vyberieme znak a v treťom určíme, koľko krát sa ma daný znak skopírovať. Napríklad ak určíme znak 'x' a v treťom argumente dáme číslo 5, tak získame xxxxx.

V druhom príklade si ukážeme praktickú ukážku využitia funkcie replace.

2. príklad: Praktická ukážka využitia funkcie replace

#include <iostream>   //kniznice
#include <string>
using namespace std;   //priestor mien
int main()   //hlavna funkcia main
{
    string retazec = "Sviatok Valentyn oslavujeme 14. februara!";
    cout << retazec << "\n";
    for(size_t i = 0; i < retazec.size(); i++)
    {
        if(retazec[i]=='Y' || retazec[i]=='y')
        {
            cout << "Tak podla teba je Valentin s tvrdym y hej?" << "\n";
            retazec.replace(i,1,1,'i');
        }
    }
    cout << retazec << "\n";
    return 0;   //koniec programu
}

Praktický príklad na funkciu replace Praktický príklad na funkciu replace

Rozbor programu:

Pointa programu je taká, že zoberie reťazec a skontroluje, či sa tam nenachádza znak y alebo Y a ak existuje, tak nahradíme y alebo Y znakom i.

Jadro nášho programu, kde nastáva to nahradenie znaku s pomocou funkcie replace je nasledovné:

for(size_t i = 0; i < retazec.size(); i++)
{
    if(retazec[i]=='Y' || retazec[i]=='y')
    {
         cout << "Tak podla teba je Valentin s tvrdym y hej?" << "\n";
         retazec.replace(i,1,1,'i');
    }
}

Nahoru

Příspěvky

Programovanie v jazyku C++: Knižnica string – funkcia replace
Ivan 24. 02. 2018, 14:00:57
Odpovědět  Odkaz 
Uz by sa mohol tento serial dalej posunut, casti o stringu uz bolo dost si myslim, kazdy programator si to vie dodatocne dostudovat veci nad retazcami z dokumentacie.
Eduard Boldižár Re: Programovanie v jazyku C++: Knižnica string – funkcia replace
Eduard Boldižár 24. 02. 2018, 16:11:20
Odpovědět  Odkaz 
Áno plánujem sa posunúť ďalej, ale ešte zostávajú 2-3 funkcie, ktoré chcem dokončiť, nech je to kompletné. Potom sa už budem venovať pointerom, dynamickou alokáciou atď...

Přidat názor

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 Exospace.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



Public Relations

Studium IT pro správce sítí nově i v kombinované formě

Na plzeňské Vyšší odborné škole zdravotnické, managementu a veřejnosprávních studií – vošplzeň.cz – zaznamenáváme dlouhodobý trend poptávky po odbornících v oblasti informačních technologií. Jelikož je v tomto oboru potřeba v souvislosti s neustálým vývojem nových technologií získávat nové znalosti, připravili jsme již od letošního školního roku 2018/2019 3letý vzdělávací program Systémový administrátor IT v kombinované (dálkové) formě.

Pokračování ...


Tiskárna Brno

Redakční blog

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


Pavel Fric

Pavel Fric, 28. únor

Lollypop


Všechny blogy »