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

Linux E X P R E S, Programovanie v jazyku C++: Knižnica string – funkcie clear a swap

Autodesk

Programovanie v jazyku C++: Knižnica string – funkcie clear a swap

C++

V tomto článku sa naučíme mazať celé reťazce s pomocou funkcie clear a s funkciou swap vzájomne vymienať obsah medzi dvoma reťazcami.


reklama

Vymazanie reťazca s funkciou clear

Môže sa vám naskytnuť situácia, že potrebujete vymazať celý reťazec. Na tento úkon je ako stvorená funkcia clear. Funkcia clear vráti reťazec s dĺžkou 0. Avšak aj s funkciou erase viete vymazať reťazec. Ukážeme si oba možností.

1. program: Vymázanie celého reťazca s funkciou erase

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string retazec = "Odnes uz vazne zacnem cvicit!";

    cout << retazec << "\n";
    retazec.erase(retazec.begin(), retazec.end());

    if (retazec.empty())
        cout << "Retazec je prazdny!" << "\n";

    retazec = "Ahojky moj priatelu!";
    cout << retazec << "\n";

    return 0;
}

Výsledok programu:

Odnes uz vazne zacnem cvicit!
Retazec je prazdny!
Ahojky moj priatelu!

Vidíte ako jednoducho vymážeme reťazec. Teraz použijme funkciu clear.

2. program: Vymázanie celého reťazca s funkciou clear

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string retazec = "Niekde medzi nebom a zemou sa odohravaju nase zivoty.";

    cout << retazec << "\n";
    retazec.clear();

    if (retazec.empty())
        cout << "Retazec je prazdny!" << "\n";

    retazec = "Videl som perfektny horror o indianskom pohrebisti. Docela mrazive!";
    cout << retazec << "\n";

    return 0;
}

Výsledok programu:

Niekde medzi nebom a zemou sa odohravaju nase zivoty.
Retazec je prazdny!
Videl som perfektny horror o indianskom pohrebisti. Docela mrazive!

Zaujímavosťou je, že funkcia clear neovplyvňuje pridelenú pamäť pre reťazec. Ak raz zmažeme reťazec, pridelená pamäť by mala ostať nedotknutá. Čo môže byť niekedy problém, pretože si predstavme zložitý systém s tisickami reťazcov, ktoré vznikajú a zanikajú a ak nebudeme uvoľnovať pamäť, tak aplikácia skôr či neskôr zahltí celú operačnú pamäť. Riešením je potom napr. funkcia shrink_to_fit.

3. príklad: Ukážka vzťahu medzi funkciou clear a pridelenou pamäťou

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string retazec = "Kedy sa vydame na Mars?";

    cout << retazec << "\n" << "Kapacita pridelenej pamäte: " << retazec.capacity() << "\n\n";
    retazec.clear();

    if (retazec.empty())
        cout << "Retazec je prazdny!" << "\n" << "Kapacita pridelenej pamäte: " << retazec.capacity() << "\n\n";

    retazec.shrink_to_fit();

    if (retazec.empty())
        cout << "Retazec je prazny!" << "\n" << "Kapacita pridelenej pamäte po uprave: " << retazec.capacity() << "\n\n";

    retazec = "Mam ta rad kocicko!";
    cout << retazec << "\n" << "Kapacita pridelenej pamäte: " << retazec.capacity() << "\n\n";

    return 0;
}

Výsledok programu:

Kedy sa vydame na Mars?
Kapacita pridelenej pamäte: 23

Retazec je prazdny!
Kapacita pridelenej pamäte: 23

Retazec je prazny!
Kapacita pridelenej pamäte po uprave: 0

Mam ta rad kocicko!
Kapacita pridelenej pamäte: 19

Funkcia swap

Rýchlo potrebujete vzájomne vymeniť obsah medzi dvoma reťazcami? Na tento účel vám poslúži funkcia swap z knižnice string.

4. príklad: Testujeme funkciu swap

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string retazec1 = "macicky";
    string retazec2 = "kocurikov";

    retazec1.swap(retazec2);
    cout << "U babicky mam 2 " << retazec1 << " a 3 " << retazec2;

    return 0;
}

Výsledok programu:

U babicky mam 2 kocurikov a 3 macicky

5. príklad: Ďalší príklad na funkciu swap

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int cislo = 21;

    cout << "Cislo " << cislo << " je delitelne ";

    string retazec;
    string retazec1 = "jednickou";
    string retazec2 = "trojkou";
    string retazec3 = "sedmickou";

    if (cislo % 1 == 0)
    {
        retazec.swap(retazec1);
        cout << retazec << ", ";
    }

    if (cislo % 3 == 0)
    {
        retazec.swap(retazec2);
        cout << retazec << " a ";
    }

    if (cislo % 7 == 0)
    {
        retazec.swap(retazec3);
        cout << retazec << ".\n";
    }

    return 0;
}

Výsledok programu:

Cislo 21 je delitelne jednickou, trojkou a sedmickou.

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