character classification
{{engfn}
- (informatika) A C++ nyelvben a karakterek feldolgozását és osztályozását a C++ Standard Library és a C könyvtár biztosítja. Az osztályozás célja annak meghatározása, hogy egy adott karakter milyen típusba tartozik, például számjegy, betű, szóköz vagy speciális karakter.
A karakterosztályozási függvényeket a <cctype> könyvtár biztosítja. Ezek a függvények segítenek meghatározni a karakterek típusát, például azt, hogy egy karakter nagybetűs-e, kisbetűs-e, számjegy-e stb.
1. Karakterosztályozási függvények
[szerkesztés]A <cctype> könyvtár a következő függvényeket biztosítja a karakterek ellenőrzésére:
| Függvény | Leírás |
|---|---|
isalpha(c) |
Igaz, ha c betű (A-Z vagy a-z) |
isdigit(c) |
Igaz, ha c számjegy (0-9) |
isalnum(c) |
Igaz, ha c betű vagy számjegy |
islower(c) |
Igaz, ha c kisbetűs (a-z) |
isupper(c) |
Igaz, ha c nagybetűs (A-Z) |
isspace(c) |
Igaz, ha c szóköz, tabulátor vagy új sor |
ispunct(c) |
Igaz, ha c írásjel (pl. !, ,, .) |
isprint(c) |
Igaz, ha c nyomtatható karakter |
isgraph(c) |
Igaz, ha c nem szóköz, de nyomtatható |
iscntrl(c) |
Igaz, ha c vezérlőkarakter (pl. \n, \t) |
tolower(c) |
Kisbetűssé alakítja c karaktert |
toupper(c) |
Nagybetűssé alakítja c karaktert |
Ezek a függvények az ASCII vagy Unicode karakterkódok alapján működnek.
2. Példák karakterosztályozásra
[szerkesztés]
2.1. Betűk és számjegyek ellenőrzése
[szerkesztés]#include <iostream>
#include <cctype>
using namespace std;
int main() {
char ch;
cout << "Adj meg egy karaktert: ";
cin >> ch;
if (isalpha(ch)) {
cout << ch << " egy betű." << endl;
} else if (isdigit(ch)) {
cout << ch << " egy számjegy." << endl;
} else {
cout << ch << " egyéb karakter." << endl;
}
return 0;
}
📌 Magyarázat:
- Ha a karakter betű, az isalpha() visszaadja true értéket. - Ha számjegy, akkor az isdigit() igaz lesz. - Egyéb esetben más karakterről van szó.
2.2. Kisbetűs vagy nagybetűs karakter ellenőrzése
[szerkesztés]#include <iostream>
#include <cctype>
using namespace std;
int main() {
char ch;
cout << "Adj meg egy karaktert: ";
cin >> ch;
if (islower(ch)) {
cout << ch << " egy kisbetűs karakter." << endl;
} else if (isupper(ch)) {
cout << ch << " egy nagybetűs karakter." << endl;
} else {
cout << ch << " nem betű." << endl;
}
return 0;
}
📌 Magyarázat:
- Az islower() ellenőrzi, hogy kisbetű-e. - Az isupper() ellenőrzi, hogy nagybetű-e.
2.3. Fehér karakterek (szóköz, tab, új sor) ellenőrzése
[szerkesztés]#include <iostream>
#include <cctype>
using namespace std;
int main() {
char ch;
cout << "Adj meg egy karaktert: ";
cin >> ch;
if (isspace(ch)) {
cout << "Ez egy szóköz vagy vezérlő karakter." << endl;
} else {
cout << "Ez nem szóköz." << endl;
}
return 0;
}
📌 Magyarázat:
- Az isspace() igaz értéket ad vissza szóköz (' '), tab ('\t'), új sor ('\n') vagy más vezérlőkarakter esetén.
3. Karakterek módosítása (tolower() és toupper())
[szerkesztés]Ha egy karaktert kisbetűssé vagy nagybetűssé szeretnénk alakítani, használhatjuk a tolower() és toupper() függvényeket.
3.1. Kisbetűs és nagybetűs átalakítás
[szerkesztés]#include <iostream>
#include <cctype>
using namespace std;
int main() {
char ch;
cout << "Adj meg egy karaktert: ";
cin >> ch;
cout << "Nagybetű: " << (char)toupper(ch) << endl;
cout << "Kisbetű: " << (char)tolower(ch) << endl;
return 0;
}
📌 Magyarázat:
- toupper() nagybetűssé alakítja a karaktert. - tolower() kisbetűssé alakítja.
3.2. Szöveg teljes átalakítása kis- és nagybetűssé
[szerkesztés]#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int main() {
string szoveg;
cout << "Adj meg egy szöveget: ";
getline(cin, szoveg);
// Nagybetűssé alakítás
for (char &ch : szoveg) {
ch = toupper(ch);
}
cout << "Nagybetűs szöveg: " << szoveg << endl;
// Kisbetűssé alakítás
for (char &ch : szoveg) {
ch = tolower(ch);
}
cout << "Kisbetűs szöveg: " << szoveg << endl;
return 0;
}
📌 Magyarázat:
- Range-based for loop (for (char &ch : szoveg)) végigmegy minden karakteren. - toupper() minden karaktert nagybetűsít. - tolower() minden karaktert kisbetűsít.
4. Gyakorlati alkalmazások
[szerkesztés]A karakterosztályozás fontos része számos programozási feladatnak, például: - Jelszóellenőrzés (betűk, számjegyek és speciális karakterek ellenőrzése) - Szövegfeldolgozás (kisbetűsítés, nagybetűsítés, szóközök eltávolítása) - Adatbeviteli ellenőrzés (csak számok, csak betűk engedélyezése) - Szöveganalízis (karaktergyakoriság meghatározása)
4.1. Jelszóellenőrzés példa
[szerkesztés]#include <iostream>
#include <cctype>
#include <string>
using namespace std;
bool jelszoEllenorzes(const string& jelszo) {
bool vanBetu = false, vanSzam = false, vanSpecialis = false;
for (char ch : jelszo) {
if (isalpha(ch)) vanBetu = true;
else if (isdigit(ch)) vanSzam = true;
else if (ispunct(ch)) vanSpecialis = true;
}
return (vanBetu && vanSzam && vanSpecialis);
}
int main() {
string jelszo;
cout << "Adj meg egy jelszót: ";
cin >> jelszo;
if (jelszoEllenorzes(jelszo)) {
cout << "Erős jelszó!" << endl;
} else {
cout << "A jelszónak tartalmaznia kell betűt, számot és speciális karaktert!" << endl;
}
return 0;
}
Összegzés
[szerkesztés]- A
<cctype>könyvtár függvényei segítségével gyorsan osztályozhatók és módosíthatók a karakterek. - Ezeket a függvényeket gyakran használják szövegfeldolgozásban, jelszóellenőrzésben és adatbeviteli ellenőrzésben.
- A
tolower()éstoupper()függvényekkel átalakíthatjuk a szövegeket.
C++ nyelven a karakterosztályozás egyszerű és hatékony eszköz a szövegfeldolgozáshoz! 🚀
- character classification - Szótár.net (en-hu)
- character classification - Sztaki (en-hu)
- character classification - Merriam–Webster
- character classification - Cambridge
- character classification - WordNet
- character classification - Яндекс (en-ru)
- character classification - Google (en-hu)
- character classification - Wikidata
- character classification - Wikipédia (angol)