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

Cimatron

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.


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

Domény a nepřeberné množství internetových adres s možností jejich zneužití

dnnsecNepropásněte sérii webinářů zaměřených na aktuální bezpečnostní trendy a jednotnou správu zabezpečení vaše IT – každé pondělí a zdarma.
S doménami přijde do kontaktu naprosto každý uživatel internetu, ačkoliv si to asi neuvědomuje. Už jenom samotné hledání na internetu je spojené s doménami, o nakupování v internetových obchodech ani nemluvě. Věděli jste však, že domény mohou být poměrně jednoduše napadeny?

Pokračování ...


EDU Trainings

Public Relations

Vyplatí se investice do SEO agentury?

QNAPObjevili jste zajímavý sortiment zboží, po kterém je na trhu poptávka. Čekala vás dlouhá práce, ale byli jste úspěšní a spustili e-shop. Veškeré zboží má perfektně zpracované fotografie a dokonalý popis. Vše je přehledné, jednoduché na ovládání a s poutavou grafikou. Proč u vás nikdo nenakupuje? Proč navštěvují konkurenční stránky, kde mají vyšší cenu, a dokonce řadu chyb v textu? Nejspíš proto, že vás zákazníci nemají kde najít. Nejste na svém trhu přítomni.

Pokračování ...


Redakční blog

Pavel Fric

Pavel Fric, 21. srpen

Sayonara Player 1.5.1

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


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.


Všechny blogy »

SOPHOS - hacking webinar 2