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).