2014-12-12 4 views
1

Я работаю над лабораторией, которая требует аутентификации пароля как старшей c-строки, так и строкового класса. У меня есть версия класса строк. Я получил пароль, введенный как массив, используя cin.getline(password, 20)Проверьте, является ли символ верхним регистром в старом стиле c-

strlen(password) также работает правильно.

Я искал, как определить старую версию c-string, содержащую заглавную букву в любом из ее значений. Все говорит, что нужно использовать isupper, который из нового класса строк (насколько я могу судить).

Есть ли способ сделать это? Я рассматриваю только проверку, используя версию строкового класса, а затем вводя его в массив символов.

+0

Примечание самый быстрый способ сделать это в простом с, если вы в состоянии взять на себя английскую систему, основанную ASCII является использование (foo> = 'A' && foo <= 'Z'). Это скажет вам, является ли символ верхним регистром. – Vality

+0

'isupper' _is only_ в старой библиотеке C, это не в новом классе строк вообще! –

ответ

1

Поскольку вы знаете, что C использует ASCII, вы можете создать свою собственную функцию:

bool upper(char chr) 
{ 
    return chr >= 'A' && chr <= 'Z'; // same as return chr >= 65 && chr <= 90 
} 
+1

Я предлагаю использовать символические «A» и «Z», чтобы избежать различий в кодировании в некоторых системах и сделать код более четким. – Vality

+0

Хотя предполагать, что ASCII или совместимая с ASCII кодировка не является рискованным предположением, педантично говоря, неправильно говорить « C использует ASCII ". –

+0

@BenjaminLindley Вы можете отредактировать ответ, если считаете, что это будет лучше;) – nbro

4

В стандартной библиотеке C имеется функция, называемая isupper, которая принимает один символ в качестве аргумента. (Неважно, откуда приходит персонаж, строка C или где-то еще.) Вероятно, это то, что вы должны использовать.

3

Существует isupper() функции в стандартной библиотеке C, а также - в <ctype>

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

Есть некоторая хорошая информация об этом here.

Смежные вопросы