Как узнать, является ли символ буквенным

155
10 июля 2019, 06:40

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

Как сделать это?

Answer 1

Можно воспользоваться функцией std::isalpha .

Рекомендую, также, прочитать описание на английском cppreference .

Эта функция вернёт ненулевое значение, если аргумент является буквой в текущей локали, если это не буква - вернёт 0. В локали по умолчанию вернёт не ноль (true) для символов: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.

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

std::string word;
std::cin >> word;
for (int i = 0; i < word.size(); ++i)
{
    char x = word[i];
    if (std::isalpha((unsigned char)x))
    {
        // some code
    }
}

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

bool isLetter(char x)
{
    return (x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z');
}

Последний способ не очень хорош, потому что стандарт не гарантирует, что буквы идут по порядку от 'A' к 'Z' (и аналогично для строчных).

READ ALSO
Высокая нагрузка на ЦП при выполнении программы

Высокая нагрузка на ЦП при выполнении программы

При вводе количества секунд начинает грузить процессор

150
массив структур в классе c++

массив структур в классе c++

Подскажите, пожалуйста, как реализовать поставленную задачу"Завод выпускает разные измерительные приборы

140
Как укоротить сообщения об ошибках и предупреждения компилятора?

Как укоротить сообщения об ошибках и предупреждения компилятора?

Как укоротить сообщения об ошибках и предупреждения компилятора? Особенно при ошибках в шаблонах сначала идёт куча строк, в каком файле инстанциация...

154
could not initialize proxy - no Session (through reference chain: com.statistic.server.entity.Report$HibernateProxy$kjlzJLtW[&ldquo;date&rdquo;]

could not initialize proxy - no Session (through reference chain: com.statistic.server.entity.Report$HibernateProxy$kjlzJLtW[“date”]

После деплоя сервера при попытке получить JSON по адресу

143