Character classification helpers answer questions such as whether a character is a digit or a letter.

isdigit `std::isdigit` reports whether a character represents a digit.
unsigned char cast Casting to `unsigned char` before classification avoids undefined behavior for non-ASCII character values.

Character Classify

ch
character_classify.cpp
Replay: real traced execution (multi-file project)
#include <cctype>
#include <iostream>

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

    bool isDigit = std::isdigit(static_cast<unsigned char>(ch)) != 0;
    bool isAlpha = std::isalpha(static_cast<unsigned char>(ch)) != 0;

    std::cout << "ch=" << ch << std::endl;
    std::cout << "isDigit=" << isDigit << std::endl;
    std::cout << "isAlpha=" << isAlpha << std::endl;
    return 0;
}
#include <cctype>
#include <iostream>

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

    bool isDigit = std::isdigit(static_cast<unsigned char>(ch)) != 0;
    bool isAlpha = std::isalpha(static_cast<unsigned char>(ch)) != 0;

    std::cout << "ch=" << ch << std::endl;
    std::cout << "isDigit=" << isDigit << std::endl;
    std::cout << "isAlpha=" << isAlpha << std::endl;
    return 0;
}
#include <cctype>
#include <iostream>

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

    bool isDigit = std::isdigit(static_cast<unsigned char>(ch)) != 0;
    bool isAlpha = std::isalpha(static_cast<unsigned char>(ch)) != 0;

    std::cout << "ch=" << ch << std::endl;
    std::cout << "isDigit=" << isDigit << std::endl;
    std::cout << "isAlpha=" << isAlpha << std::endl;
    return 0;
}
  1. ch ← 7, isDigit ← 1, isAlpha ← 0

    4int main() {5    char ch→ 7 = '7'; //@ch='A', '#'67    bool isDigit→ 1 = std::isdigit(static_cast<unsigned char>(ch7)) != 0;8    bool isAlpha→ 0 = std::isalpha(static_cast<unsigned char>(ch7)) != 0;910    std::cout << "ch=" << ch7 << std::endl;11    std::cout << "isDigit=" << isDigit1 << std::endl;12    std::cout << "isAlpha=" << isAlpha0 << std::endl;13    return 0;14}
    outputch=7
    isDigit=1
    isAlpha=0
  1. ch ← A, isDigit ← 0, isAlpha ← 1

    4int main() {5    char ch→ A = 'A';67    bool isDigit→ 0 = std::isdigit(static_cast<unsigned char>(chA)) != 0;8    bool isAlpha→ 1 = std::isalpha(static_cast<unsigned char>(chA)) != 0;910    std::cout << "ch=" << chA << std::endl;11    std::cout << "isDigit=" << isDigit0 << std::endl;12    std::cout << "isAlpha=" << isAlpha1 << std::endl;13    return 0;14}
    outputch=A
    isDigit=0
    isAlpha=1
  1. ch ← #, isDigit ← 0, isAlpha ← 0

    4int main() {5    char ch→ # = '#';67    bool isDigit→ 0 = std::isdigit(static_cast<unsigned char>(ch#)) != 0;8    bool isAlpha→ 0 = std::isalpha(static_cast<unsigned char>(ch#)) != 0;910    std::cout << "ch=" << ch# << std::endl;11    std::cout << "isDigit=" << isDigit0 << std::endl;12    std::cout << "isAlpha=" << isAlpha0 << std::endl;13    return 0;14}
    outputch=#
    isDigit=0
    isAlpha=0