Funkcje znakowe w C++

C++ oferuje zestaw funkcji do pracy z pojedynczymi znakami, takich jak sprawdzanie typu znaku, konwersja liter, czy operacje na znakach. Większość funkcji znajduje się w nagłówku:

Funkcje te działają na typie int lub char, ale zwracają wartości typu int (zwykle 0 lub różne od zera).


1. Funkcje sprawdzające typ znaku

Funkcje te zwracają wartość różną od zera, jeśli znak spełnia warunek, w przeciwnym razie 0.

Funkcja Opis Przykład
isalnum(c) alfanumeryczny (litera lub cyfra) isalnum('a') → true
isalpha(c) litera alfabetu isalpha('7') → false
isdigit(c) cyfra (0–9) isdigit('5') → true
isxdigit(c) cyfra szesnastkowa (0–9, a–f, A–F) isxdigit('B') → true
islower(c) mała litera islower('a') → true
isupper(c) wielka litera isupper('A') → true
isspace(c) biały znak (' ', '\t', '\n') isspace('\n') → true
ispunct(c) znak interpunkcyjny ispunct('!') → true
isprint(c) drukowalny znak isprint('\n') → false
isgraph(c) drukowalny znak oprócz spacji isgraph(' ') → false
iscntrl(c) znak sterujący iscntrl('\n') → true

2. Funkcje konwersji znaków

Funkcje te pozwalają na zmianę wielkości liter lub innych właściwości.

Funkcja Opis Przykład
toupper(c) zamiana na wielką literę toupper('a') → 'A'
tolower(c) zamiana na małą literę tolower('B') → 'b'

Przykład:


3. Funkcje konwersji znaków na liczby

  • Funkcje znakowe nie konwertują bezpośrednio na liczby, ale często stosuje się proste przeliczenia:
  • Funkcje isdigit(c) warto użyć przed konwersją, aby uniknąć błędów.

4. Funkcje sprawdzające klasę znaków w standardzie C++

Oprócz <cctype> w C++11+ wszystkie funkcje są dostępne również w std:::


5. Przykładowe zastosowania funkcji znakowych

5.1 Sprawdzanie poprawności wprowadzonego znaku

5.2 Konwersja tekstu na wielkie litery

5.3 Liczenie liter i cyfr w ciągu


6. Funkcje pomocnicze i uwagi

  • Wszystkie funkcje działają najlepiej dla znaków ASCII.
  • W przypadku znaków Unicode (np. polskie znaki), standardowa <cctype> może nie działać poprawnie.
  • Funkcje zwracają int, więc czasem trzeba rzutować wynik na char.

7. Podsumowanie

  • Funkcje znakowe w C++ służą do sprawdzania typu znaku i konwersji liter.
  • Najczęściej używane funkcje: isalpha, isdigit, islower, isupper, isspace, toupper, tolower.
  • Są podstawowym narzędziem przy walidacji danych, przetwarzaniu tekstu i obsłudze wejścia użytkownika.
  • Należy pamiętać, że działają najlepiej dla ASCII, a do Unicode warto stosować biblioteki zewnętrzne (np. ICU lub wstring).