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 compare (2)

EDU Trainings IT školení

Programovanie v jazyku C++: Knižnica string – funkcia compare (2)

C++

Pokračujeme druhým dielom v predstavovaní funkcie compare z knižnice string. 


Ďalšie testy s funkciou compare

V minulom diele sme trochu vysvetlili návratové hodnoty funkcie compare, avšak sme si neukázali všetko. Tak poďme sa pozrieť nato, čo som v minulom diele vynechal.

1. príklad: Pokračovanie s návratovými hodnotami funkcie compare

#include <iostream>   // hlavičkove subory
#include <string>

using namespace std;  // priestor mien

int main()
{
    string retazec1 = "Stellaris";
    string retazec2 = "Stellaris";
    int num1 = retazec1.compare(retazec2);
    int num2 = retazec2.compare(retazec1);

    cout << "num1: " << num1 << " num2: " << num2 << "\n";   // 1. test

    string retazec3 = "hra Stellaris";
    string retazec4 = "Stellaris";
    int num3 = retazec3.compare(retazec4);
    int num4 = retazec4.compare(retazec3);

    cout << "num3: " << num3 << " num4: " << num4 << "\n";   // 2. test

    string retazec5 = "Stellaris hra";
    string retazec6 = "Stellaris";
    int num5 = retazec5.compare(retazec6);
    int num6 = retazec6.compare(retazec5);

    cout << "num5: " << num5 << " num6: " << num6 << "\n";   // 3. test

    string retazec7 = "Stellaris hra";
    string retazec8 = "vStellaris hra";
    int num7 = retazec7.compare(retazec8);
    int num8 = retazec8.compare(retazec7);

    cout << "num7: " << num7 << " num8: " << num8 << "\n";   // 4. test

    string retazec9 = "Stellaris             ";
    string retazec10 = "Stellaris vesmirna hra";
    int num9 = retazec9.compare(retazec10);
    int num10 = retazec10.compare(retazec9);

    cout << "num9: " << num9 << " num10: " << num10 << "\n";   // 5. test

    return 0;  // koniec programu
}

Výsledok programu:

num1: 0 num2: 0
num3: 1 num4: -1
num5: 4 num6: -4
num7: -1 num8: 1
num9: -1 num10: 1

Rozbor programu:

Opäť si výsledky rozdelíme na testy.

1. test – Tento spôsob už poznáte, oba reťazce sú rovnaké

2. test – Pre zopakovanie, funkcia compare vyhodnocuje od počiatočných znakov a podľa toho sa odvíja návrátova hodnota. Keďže h má väčšie ASCII hodnotu ako S, tak num3 je 1 a num4 -1.

3. test – Čo sa stane, ak funkcia compare porovnáva jednotlivé znaky, avšak narazí na situáciu, že jeden z reťazcov je dlhší a i napriek tomu boli doteraz reťazce rovnaké? Návratová hodnota 4 pri num5 znamená, že reťazec5 je o 4 znaky dlhší ako reťatec6 a num6 je presne naopak.

4. test – Stačí jeden nesúlad a už porovnávanie skončí bez ohľadu, že zvyšok reťazca môžu mať rovnaký.

5. test – Majú sice spočiatku rovnaké znaky, ale nezabudníte, že i medzera je znak.

Rôzne možností deklarácie funkcie compare

Máme niekoľko možností, ako využiť funkciu compare.

2. príklad: Rôzné deklaračné spôsoby funkcie compare

#include <iostream>   // hlavičkove subory
#include <string>

using namespace std;  // priestor mien

int main()
{
    string retazec1 = "Najlepsia grand vesmirna strategia je hra Stellaris!";
    string retazec2 = "Stellaris";

    if (retazec1.compare(retazec2) == 0)   // prvy sposob
        cout << "Prvy retazec je rovnaky ako druhy\n";
    else
        cout << "Prvy retazec nie je rovnaky ako druhy\n";

    if (retazec1.compare(42, 9, "Stellaris") == 0)   // druhy sposob
        cout << "Prvy retazec je rovnaky ako druhy\n";
    else
        cout << "Prvy retazec nie je rovnaky ako druhy\n";

    if (retazec1.compare(retazec1.size()-10, 9, "Stellaris") == 0)   // treti sposob
        cout << "Prvy retazec je rovnaky ako druhy\n";
    else
        cout << "Prvy retazec nie je rovnaky ako druhy\n";

    if (retazec1.compare(retazec1.size()-10, 9, retazec2, 0, 9) == 0)   // stvrty sposob
        cout << "Prvy retazec je rovnaky ako druhy\n";
    else
        cout << "Prvy retazec nie je rovnaky ako druhy\n";

    return 0;  // koniec programu
}

Výsledok programu:

Prvy retazec nie je rovnaky ako druhy
Prvy retazec je rovnaky ako druhy
Prvy retazec je rovnaky ako druhy
Prvy retazec je rovnaky ako druhy

Rozbor programu:

1. spôsob – toto by malo byť jasné,

2. spôsob – prvý argument je pozícia v reťazci, od ktorého začne funkcia compare porovnávať a druhý argument predstavuje počet znakov od prvého znaku definovaného v prvom argumente a tretí argument je hľadaný reťazec,

3. spôsob – rovnako ako pri druhom spôsobe až na využitie funkcie size,

4. spôsob – je to taká kombinácia prvého a druhého (resp. tretieho) spôsobu, prve dve argumenty sa vzťahujú k retazcu1 a k retazcu2 štvrtý a piaty argument.

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


SOPHOS - hacking webinar 2

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