Funkcia find
Funkcia find hľadá zhodu nejakého znaku alebo skupiny znakov s argumentom, ktorý zadáme a vrácia číselnú pozíciu typu size_t. Pozícia vyjadruje výskyt prvého znaku hľadanej sekvencie znakov.
1. príklad:
#include <iostream> // hlavickové súbory
#include <string>
using namespace std; // priestor mien
int main() // hlavná funkcia main
{
string retazec = "Čo len s nami bude v budúcností?"; // deklarácia reťazca
size_t pozicia = retazec.find("len"); // hľadáme dane slovo alebo slovne spojenie
size_t pozicia1 = retazec.find("s nami");
cout << "Slovo len sa nachadza na pozicii: " << pozicia << "\n" << "Slovne spojenie s nami sa nachaddza na pozicii: " << pozicia1; // výstup
return 0; // koniec programu
}
Výsledok programu:
Slovo len sa nachadza na pozicii: 3 Slovne spojenie s nami sa nachaddza na pozicii: 7
Ak znak alebo sekvencia znakov sa nenachádza v reťazci, funkcia vrácia maximálnu hodnotu size_t. Maximálnu hodnotu size_t vyjadruje v knižnici string konštanta npos.
Preto bude efektívnejšie využívať túto konštantu pri hľadaní znakov s pomocou funkcie find a ukážeme si to v druhom príklade.
2. príklad:
#include <iostream> // hlavickové súbory
#include <string>
using namespace std; // priestor mien
int main() // hlavná funkcia main
{
string retazec = "Slovko fotosynteza je ale pekelne slovo!";
size_t pozicia = retazec.find("fotosynteza"); // hľadáme dane slovo alebo slovne spojenie
size_t pozicia1 = retazec.find("pekelne slovo");
if (pozicia != string::npos && pozicia1 != string::npos)
cout << "Slovo fotosynteza sa nachadza na pozicii: " << pozicia << "\n" << "Slovne spojenie pekelne slovo sa nachadza na pozicii: " << pozicia1;
return 0; // koniec programu
}
Výsledok programu:
Slovo fotosynteza sa nachadza na pozicii: 7 Slovne spojenie pekelne slovo sa nachadza na pozicii: 26
3. príklad: Na precvičenie funkcie find
#include <iostream> // hlavickové súbory
#include <string>
using namespace std; // priestor mien
int main() // hlavná funkcia main
{
string retazec; // deklarácia reťazca
cout << "Kolko je 10 * 10? Napis vyslednu cislicu slovom!\n";
cin >> retazec; // vstup od užívateľa
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;
}
size_t pozicia= retazec.find("sto"); // využitie funkcie find
if (pozicia == 0 && retazec.size() == 3) // musíme ošetriť, aby užívateľ nenapísal niečo naviac
cout << "Spravne!";
else
cout << "Zle! Bud si to zle napisal alebo vrat sa do skoly!";
return 0; // koniec programu
}
Výsledok programu:
Kolko je 10 * 10? Napis vyslednu cislicu slovom! sto Spravne!
Funkcia size
Funkciu size už dôverne poznáte, ale nie je na škodu ju spomenúť v tomto minicykle. Funkcia size vracia počet byte v reťazci. Keďže jeden znak má veľkosť jeden byte, tak viete veľmi pohodlne zistiť, koľko je v reťazci počet znakov. Dajme si jednoduchý príklad na záver na odľahčenie.
4. príklad:
#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.size(); // výpis
return 0; // koniec programu
}
Výsledok programu:
Zadaj akekolvek slovo! ionizacia Vas zvoleny retazec je: ionizacia Velkost vasho retazca je: 9
