C++

Как проверить символ char в C++: цифра, буква, пробел и сравнение

Если нужно проверить конкретный символ `char`, используйте обычное сравнение:.

Ниже — разделы про проверка конкретного символа, проверка цифры и проверка буквы, чтобы быстро понять устройство материала, практические ограничения и типовые точки отказа.


Если нужно проверить конкретный символ char, используйте обычное сравнение:

char symbol = '@';

if (symbol == '@') {
    std::cout << "Это собака" << std::endl;
}

Если нужно понять, цифра это, буква или пробел, используйте функции из <cctype>: std::isdigit, std::isalpha, std::isspace

Проверка конкретного символа

#include <iostream>

int main() {
    char answer;

    std::cout << "Продолжить? y/n: ";
    std::cin >> answer;

    if (answer == 'y') {
        std::cout << "Продолжаем" << std::endl;
    } else {
        std::cout << "Остановка" << std::endl;
    }

    return 0;
}

Обратите внимание на одинарные кавычки:

'y'

Это символ. Двойные кавычки означают строку:

"y"

Проверка цифры

#include <cctype>
#include <iostream>

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

    if (std::isdigit(static_cast<unsigned char>(c))) {
        std::cout << "Это цифра" << std::endl;
    }

    return 0;
}

Для простых ASCII-символов часто встречают std::isdigit(c), но более безопасный вариант — привести символ к unsigned char

Проверка буквы

#include <cctype>
#include <iostream>

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

    if (std::isalpha(static_cast<unsigned char>(c))) {
        std::cout << "Это буква" << std::endl;
    }

    return 0;
}

Для русских букв std::isalpha может вести себя не так, как ожидает новичок: многое зависит от локали и кодировки. Для первого урока используйте английские символы

Проверка пробела

#include <cctype>
#include <iostream>

int main() {
    char c = ' ';

    if (std::isspace(static_cast<unsigned char>(c))) {
        std::cout << "Это пробельный символ" << std::endl;
    }

    return 0;
}

isspace проверяет не только обычный пробел, но и перевод строки, табуляцию и похожие символы

Полная проверка одним блоком

Для учебной задачи удобно собрать проверки в одну программу: сначала цифра, потом буква, потом пробельный символ, потом все остальное

#include <cctype>
#include <iostream>

int main() {
    char c;

    std::cout << "Введите один символ: ";
    std::cin >> c;

    unsigned char uc = static_cast<unsigned char>(c);

    if (std::isdigit(uc)) {
        std::cout << "Цифра" << std::endl;
    } else if (std::isalpha(uc)) {
        std::cout << "Буква" << std::endl;
    } else if (std::isspace(uc)) {
        std::cout << "Пробел или другой пробельный символ" << std::endl;
    } else {
        std::cout << "Другой символ" << std::endl;
    }

    return 0;
}

Нюанс: std::cin >> c пропускает обычные пробелы при вводе. Поэтому ветку isspace вы чаще увидите при обработке символов из строки или файла, а не при таком простом вводе с клавиатуры

Практический сценарий: пароль

Проверим, есть ли в пароле хотя бы одна цифра:

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

int main() {
    std::string password = "hello7";
    bool hasDigit = false;

    for (char c : password) {
        if (std::isdigit(static_cast<unsigned char>(c))) {
            hasDigit = true;
            break;
        }
    }

    if (hasDigit) {
        std::cout << "В пароле есть цифра" << std::endl;
    } else {
        std::cout << "Добавьте хотя бы одну цифру" << std::endl;
    }

    return 0;
}

Такой код уже похож на реальную проверку формы

Частые ошибки

Писать char в двойных кавычках

Так нельзя для char:

char c = "a";

Правильно:

char c = 'a';

Забыть cctype

Для isdigit, isalpha, isspace подключайте:

#include <cctype>

Проверять русские буквы как английские

Символы и кодировки — отдельная тема. Если вам нужно надежно работать с Unicode, одного char может быть мало

Путать один символ и поиск в строке

Запрос «проверить char» — это проверка одного символа. Если у вас есть строка std::string, нужно либо пройти ее циклом, либо использовать find. Например, password == '7' не проверит наличие цифры внутри пароля: строку надо разбирать по символам

Мини-задание

Попросите пользователя ввести один символ и выведите:

  • цифра, если это цифра;
  • буква, если это буква;
  • другое, если не подходит.

Начните с английских букв и цифр, чтобы не упереться в локаль

Что почитать дальше по C++

Если нужен общий маршрут по теме, откройте рубрику C++. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x