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
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
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');
}
}






