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.
