Получение кода персонажа из символа - PullRequest
1 голос
/ 25 ноября 2011

У меня есть массив символов, заполненный cin, но я пытаюсь найти способ проверить каждый символ индивидуально, чтобы убедиться, что это только один из заданного количества символов (az, AZ, 0-9, [пробел ]).

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

В качестве альтернативы, если кто-то знает какие-либо другие способы сделать это, было бы замечательно.

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Самый простой способ - использовать isalpha(), isdigit() или isalnum():

char ch = ...  //  The character

//  Original solution
if (isalpha(ch) || isdigit(ch)){

}

//  Better solution by fefe (see comments)
if (isalnum(ch)){

}

Они определены в ctype.h: http://www.cplusplus.com/reference/clibrary/cctype/

В противном случае вы можететакже используйте сравнения:

if ('a' <= ch && ch <= 'z' ||
    'A' <= ch && ch <= 'Z' ||
    '0' <= ch && ch <= '9'
){

}

Этот последний подход с использованием сравнений будет обобщать для произвольных диапазонов.

3 голосов
/ 25 ноября 2011

Вы можете легко получить доступ к определенному коду символа, используя нужный символ в одинарных кавычках, например, 'A'. Поэтому, если вы хотите проверить, находится ли персонаж в определенном диапазоне:

char c = //some character
if ( c >= 'A' && c <= 'Z' ) {
    //do something
}

должно работать так, как вы ожидаете. Кроме того, если вас интересуют именно алфавитно-цифровые символы, существует вспомогательная функция с именем isalnum, определенная в <ctype.h>, которая проверяет, является ли символ буквенно-цифровым символом.

1 голос
/ 25 ноября 2011

Вы можете определить, находится ли число в пределах диапазона, который вы ищете в таблице ASCII: http://www.asciitable.com/index/asciifull.gif. То> = 48 && <123. </p>

...