Ugrás a tartalomhoz

cctype library

A Wikiszótárból, a nyitott szótárból


Főnév

cctype library (tsz. cctype libraries)

  1. (informatika) A cctype (korábban ctype.h) egy C++ standard könyvtár, amely olyan függvényeket tartalmaz, amelyek karakterek osztályozására és konvertálására szolgálnak. Ez a könyvtár elsősorban az ASCII karaktereket kezeli, de kompatibilis a nemzetközi karakterkészletekkel is, ha a megfelelő lokalizációt alkalmazzuk.

1. cctype függvények és használatuk

A következő függvények az <cctype> fejlécben találhatók, és a std névtér nélkül is használhatók, mivel ezek a C szabványos függvényei:

Karakterosztályozás

Ezek a függvények egy karaktert ellenőriznek, és igaz (true) vagy hamis (false) értéket adnak vissza attól függően, hogy a karakter megfelel-e egy adott kategóriának.

Függvény Leírás
isalnum(int c) Igaz, ha c betű (A-Z, a-z) vagy számjegy (0-9).
isalpha(int c) Igaz, ha c betű (A-Z vagy a-z).
iscntrl(int c) Igaz, ha c vezérlőkarakter (pl. \n, \t).
isdigit(int c) Igaz, ha c számjegy (0-9).
isgraph(int c) Igaz, ha c nyomtatható, kivéve a szóköz (isprint(c) && !isspace(c)).
islower(int c) Igaz, ha c kisbetű (a-z).
isprint(int c) Igaz, ha c nyomtatható karakter (beleértve a szóközt is).
ispunct(int c) Igaz, ha c írásjel (!isalnum(c) && !isspace(c) && isprint(c)).
isspace(int c) Igaz, ha c fehér karakter (szóköz, tabulátor, sortörés stb.).
isupper(int c) Igaz, ha c nagybetű (A-Z).
isxdigit(int c) Igaz, ha c hexadecimális számjegy (0-9, A-F, a-f).

Példa:

#include <iostream>
#include <cctype>

int main() {
    char ch = 'A';

    if (isalpha(ch)) {
        std::cout << ch << " egy betű." << std::endl;
    }

    if (isupper(ch)) {
        std::cout << ch << " egy nagybetű." << std::endl;
    }

    return 0;
}

Karakterkonverzió

Ezek a függvények egy karaktert más formátumra alakítanak:

Függvény Leírás
tolower(int c) Kisbetűvé alakítja c karaktert (ha lehetséges).
toupper(int c) Nagybetűvé alakítja c karaktert (ha lehetséges).

Példa:

#include <iostream>
#include <cctype>

int main() {
    char ch = 'b';
    char upper = toupper(ch);
    char lower = tolower('D');

    std::cout << "Kisbetűből nagybetű: " << upper << std::endl;
    std::cout << "Nagybetűből kisbetű: " << lower << std::endl;

    return 0;
}

2. Gyakorlati alkalmazás

Szöveg betűinek számolása

#include <iostream>
#include <cctype>
#include <string>

int main() {
    std::string szoveg = "Hello, Világ 2025!";
    int betuk = 0, szamok = 0, egyeb = 0;

    for (char ch : szoveg) {
        if (isalpha(ch))
            betuk++;
        else if (isdigit(ch))
            szamok++;
        else
            egyeb++;
    }

    std::cout << "Betűk: " << betuk << ", Számok: " << szamok << ", Egyéb: " << egyeb << std::endl;
    return 0;
}

Kisbetűsítés

#include <iostream>
#include <cctype>
#include <string>

int main() {
    std::string szoveg = "Helló, Világ!";
    
    for (char& ch : szoveg) {
        ch = tolower(ch);
    }

    std::cout << szoveg << std::endl;
    return 0;
}

3. Fontos megjegyzések

  • A függvények int típusú paramétert vesznek át, de ez általában egy karakter (char) ASCII kódját jelenti.
  • Ha a függvények nem ASCII karaktert kapnak (például UTF-8 többbájtos karaktereket), akkor az eredmény nem garantált.
  • Lokalizáció: Ha nemzetközi karaktereket akarunk kezelni, használjunk std::locale és std::tolower / std::toupper függvényeket az <locale> fejlécből.

Lokalizációs példa

#include <iostream>
#include <locale>

int main() {
    std::locale loc("hu_HU.UTF-8");
    wchar_t ch = L'Ő';

    std::wcout.imbue(loc);
    std::wcout << std::tolower(ch, loc) << std::endl; // ő
    return 0;
}

4. Összegzés

  • A cctype függvények hasznosak a karakterek osztályozására és módosítására.
  • Alapvetően ASCII karakterekkel működnek, de lokalizációval bővíthetőek.
  • A tolower és toupper konverziók nem mindig működnek megfelelően nemzetközi karakterek esetén.
  • Alternatívák: Használjunk std::locale és std::wstring Unicode szövegkezeléshez.