Linux E X P R E S

Facebook

Programovanie v jazyku C++: Knižnica string – funkcie length, empty a at

C++

Čakajú nás pre vás už známe funkcie length a empty zo skorších dielov a predstavíme si funkciu at, s pomocou nej vieme napr. vypísať vybraný znak z reťazca. 


Funkcie length a empty

Rovnako ako funkcia size, vrácia počet bytov v reťazci. To znamená, že je na vás, ktorú funkciu uprednostníte, či už funkciu length alebo size. Samozejme si ukážeme dve príklady na funkciu length.

Poznámka šéfredaktora: Počet bytů je roven počtu znaků jen u řetězců v klasických kódováních (ASCII, ISO 8859-2 apod.). Pokud použijete jiné kódování, například UTF-8, může být počet bytů větší než počet znaků. Pro tato kódování se používají jiné řetězcové třídy.

Pri funkcii empty by ste už mali poznať to, že funkcia testuje, či je reťazec prázdny. Hodí sa všade tam, kde potrebujete testovať napr. či užívateľ zadal vôbec niečo a pod. Funkcia vrácia true, ak je hodnota dĺžky reťazca 0, inak false.

1. príklad: Jednoduchý program na funkciu length a empty

#include <iostream>   // hlavickové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavná funkcia main
{
    string retazec;

    cout << "Zadaj akekolvek slovo!\n";
    cin >> retazec;

    if (retazec.empty())   // test či užívateľ niečo napísal
    {
        cout << "Ale ved ty si nic nezadal! Za trest si ma spust este raz!";
        return 0;
    }

    cout << "Vas zvoleny retazec je: " << retazec << "\nVelkost vasho retazca je: " << retazec.length();   // výpis

    return 0;   // koniec programu
}

Výsledok programu:

Zadaj akekolvek slovo!
Jupiter
Vas zvoleny retazec je: Jupiter
Velkost vasho retazca je: 7

2. príklad: Program zameraný na funkciu length

#include <iostream>   // hlavickové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavná funkcia main
{
    string retazec = "  ";   

    for (size_t i = 0; i < retazec.length() / 2; i++)
    {
        for (size_t j = retazec.length()-1; j >= retazec.length() / 2; j--)
        {
            retazec[i] = 'a' + i;
            retazec[j] = 'z' - 5 + j;
        }
    }

    cout << retazec;   // vypis na obrazovku

    return 0;   // koniec programu
}

Výsledok programu:

abcxyz

Funkcia at

Ak by ste urychlene potrebovali vypísať nejaký znak z reťazca, nato slúži funkcia at. Ako argument dávame pozíciu znaku, ktorý chceme získať. Nezabudníte, že pozícia v reťazci začína od 0. Poďme sa pozrieť na pár príkladov jej využitia.

3. príklad: Skúška funkcie at

#include <iostream>   // hlavickové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavná funkcia main
{
    string retazec = "adactapalatalamapalatmpatpo0er";

    cout << retazec.at(0)<<retazec.at(8)<<retazec.at(14)<<retazec.at(15)<<" "<<retazec.at(21)<<retazec.at(23)<<retazec.at(24)<<retazec.at(28)<<retazec.at(29);

    return 0;   // koniec programu
}

Výsledok programu:

alma mater

4. príklad: Vypíšeme všetky znaky v reťazci

#include <iostream>   // hlavickové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavná funkcia main
{
    string retazec = "Mam rad hviezdicky na oblohe, su tak vzdialene a zahadne a to ma naplna melancholickym stastim.";

    for (size_t i = 0; i < retazec.size(); i++)
    {
        cout << retazec.at(i) << " ";
    }

    return 0;   // koniec programu
}

Výsledok programu:

M a m   r a d   h v i e z d i c k y   n a   o b l o h e ,   s u   t a k   v z d
i a l e n e   a   z a h a d n e   a   t o   m a   n a p l n a   m e l a n c h o
l i c k y m   s t a s t i m .

5. príklad: Alternatívny spôsob vyhľadavania napr. slov v reťazci. Samozrejme, sú aj omnoho lepšie vyhľadávacie funkcie, príklad slúži ako zaujímavosť

#include <iostream>   // hlavickové súbory
#include <string>

using namespace std;   // priestor mien

int main()   // hlavná funkcia main
{
    string retazec = "Vzdy ked vstanem, som rad ze zijem a dycham.";

    for (size_t i = 0; i < retazec.size(); i++)
    {
        if (retazec[i] == 'z' && retazec[i+1] == 'i' && retazec[i+2] == 'j' && retazec[i+3] && 'e' && retazec[i+4] == 'm')
        {
            cout << retazec.at(i) << retazec.at(i+1) << retazec.at(i+2) << retazec.at(i+3) << retazec.at(i+4);
        }
    }

    return 0;   // koniec programu
}

Výsledok programu:

zijem

Diskuze (0) Nahoru