Funkcia isalnum
Či je znak alfanumerický, zistíme s pomocou funkcie isalnum.
1. príklad:
#include <iostream> // hlavičkové súbory #include <cctype> using namespace std; // priestor mien int main() //hlavna funkcia main { string retazec = "abc123"; // naš zvolený reťazec int pocitadlo = 0; for (size_t i = 0; i < retazec.size(); i++) // cyklus { if (isalnum(retazec[i])) // počítame počet alfanumerických znakov pocitadlo++; } cout << "Pocet alfanumerickych znakov v nasom zadanom retazci je: " << pocitadlo << "\n"; // výpis na obrazovku return 0; // koniec programu }
Výsledok programu:
Pocet alfanumerickych znakov v nasom zadanom retazci je: 6
Ukážme si teraz situáciu, že by bolo napísané v nejakom manuáli k programu, ako zadať meno a priezvisko do počítača. Avšak by bolo v manuáli chybné zadanie a preto zadá užívateľ napr. Eva/Novakova miesto Eva Novakova. Ako zameníme znak / na medzeru? To si ukážeme v druhom programe.
2. príklad:
#include <iostream> // hlavičkové súbory #include <cctype> using namespace std; // priestor mien int main() // hlavna funkcia main { string retazec = "Evicka/Novakova"; // naš zvolený reťazec for (size_t i = 0; i < retazec.size(); i++) // cyklus { if (!isalnum(retazec[i])) retazec[i] = ' '; } cout << "Meno bolo zadane zle! Spravne meno a priezvisko: " << retazec << "\n"; // výpis na obrazovku return 0; // koniec programu }
Výsledok programu:
Meno bolo zadane zle! Spravne meno a priezvisko: Evicka Novakova
Funkcia isalpha
Funkcia isalpha si všíma len znaky, ktoré patria do abecedy. Presvedčme sa sami v treťom príklade.
3. príklad:
#include <iostream> // hlavičkové súbory #include <cctype> using namespace std; // priestor mien int main() // hlavna funkcia main { string retazec = "Alpha1Andromedae"; // naš zvolený reťazec int pocitadlo = 0; for (size_t i = 0; i < retazec.size(); i++) //cyklus { if (!isalpha(retazec[i])) pocitadlo++; } cout << "Pocet neabecednych znakov: " << pocitadlo << "\n"; // výpis na obrazovku return 0; // koniec programu }
Výsledok programu:
Pocet neabecednych znakov: 1
Skúsme tak ako pri funkcii isalnum, pozmeniť reťazec do správnej podoby.
4. príklad:
#include <iostream> // hlavičkové súbory #include <cctype> using namespace std; // priestor mien int main() // hlavna funkcia main { string retazec = "Alpha1Andromedae"; // naš zvolený reťazec for (size_t i = 0; i < retazec.size(); i++) // cyklus { if (!isalpha(retazec[i])) retazec[i] = ' '; } cout << "Poznas hviezdicku " << retazec << " zo suhvezdia Andromeda?\n"; // výpis na obrazovku return 0; // koniec programu }
Výsledok program:
Poznas hviezdicku Alpha Andromedae zo suhvezdia Andromeda?
Funkcia ispunct
Ako už z názvu vyplýva, funkcia testuje, či znak patrí do interpukcie. Ktoré znaky sú do interpukcie zahrnuté nám ukáže piatý program.
5. príklad:
#include <iostream> // hlavičkové súbory #include <cctype> using namespace std; // priestor mien int main() // hlavna funkcia main { for (int i = 0; i < 256 ; i++) // cyklus { if (ispunct(i)) // test, či je znak interpukciou cout << static_cast<char>(i); } return 0; // koniec programu }
Výsledok programu:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Fajn, to by bolo všetko ku knižnici cctype. Mali by ste byť schopní už samostatne pracovať s touto knižnicou a určite nájdete ďalšie typy a triky na internete. Nabudúce začneme nový minicyklus o manipulácii s reťazcami.