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++. Для соседних задач пригодятся эти разборы:
- Как проверить, есть ли символ в строке C++: find, npos и цикл
- Как проверить большая или маленькая буква в C++: isupper, islower и русские символы
- Microsoft Visual C++: что скачать и как проверить
- Как проверить Visual C++ на Windows 10: runtime, компилятор и тестовый запуск