
//
// To jest przykładowy kod z podrozdziału 11.6 „Klasyfikowanie znaków” książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <iostream>
#include <cctype>

using namespace std;

//------------------------------------------------------------------------------

int main()
{
    char ch;
    while (cin.get(ch)) {
        if (isspace(ch)) {    // Jeśli ch jest białym znakiem,
            // nic nie rób (tzn. pomiń go).
        }
        if (isdigit(ch)) {
            // Wczytuje liczbę.
        }
        else if (isalpha(ch)) {
            // Wczytuje identyfikator.
        }
        else {
            // Obsługa operatorów.
        }
    }
}

//------------------------------------------------------------------------------

void test(char c)
{
    isspace(c);    // Sprawdza, czy c jest białym znakiem (' ', '\t', '\n' itp.).
    isalpha(c);    // Sprawdza, czy c jest literą ('a', 'z', 'A', 'Z' itd., ale nie '_').
    isdigit(c);    // Sprawdza, czy c jest liczbą dziesiętną ('0'..'9').
    isxdigit(c);   // Sprawdza, czy c jest liczbą szesnastkową (cyfra dziesiętna lub litera 'a'..'f' lub 'A'..'F').
    isupper(c);    // Sprawdza, czy c jest wielką literą.
    islower(c);    // Sprawdza, czy c jest małą literą.
    isalnum(c);    // Sprawdza, czy c jest literą czy cyfrą dziesiętną.
    iscntrl(c);    // Sprawdza, czy c jest znakiem sterującym (kody ASCII 0..31 i 127).
    ispunct(c);    // Sprawdza, czy c nie jest literą, cyfrą, białym znakiem lub niewidocznym znakiem sterującym.
    isprint(c);    // Sprawdza, czy c jest znakiem drukowalnym (ASCII ''..'~').
    isgraph(c);    // Sprawdza, czy c isalpha()|isdigit()|ispunct() (uwaga: nie spacja).

    toupper(c);    // c lub odpwoiednik c napisany wielkimi literami.
    tolower(c);    // c lub odpwoiednik c napisany małymi literami.
}

//------------------------------------------------------------------------------

void tolower(string& s)    // Zamienia s na małe litery.
{
    for (int i=0; i<s.length(); ++i) s[i] = tolower(s[i]);
}

//------------------------------------------------------------------------------
