Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
#1

Проверка на ввод символа - C++

26.06.2012, 19:15. Просмотров 2488. Ответов 11
Метки нет (Все метки)

Пользователь вводит несколько строк (имя, фамилия и тд). Не могу сообразить как реализовать проверку, на то что бы вводимые символы не являлись цифрами или знаками препинания. Кучу лесенок if с проверкой по аски коду? Но опять же в таблице аски вроде как проблема с русскими символами. Да и неудобно это.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2012, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка на ввод символа (C++):

Проверка на ввод символа - C++
При вводе какого либо символа программа уходит в прострацию надо что бы программ распазновала что это символ и выводила error int main() ...

Проверка на ввод символа - C++
Предположим вместо числа был введен символ, тогда после ввода символа пропускается вторая строчка cin>>b; и далее заного перезапускается...

Ввод символа - C++
char b; int c; puts("Int"); scanf("%d", &c); puts("Char"); b = getchar(); putchar(b); Когда ввел число, система не дает...

Пропускает ввод символа - C++
Начал изучать с++ и в процессе выполнения наткнулся на проблему. В процессе выполнения программа нормально запрашивает и принимает ...

Ввод специального символа. - C++
Всем привет. У меня вопрос про символ -  Decimal 26 HEX 1A Подскажите как мне его записать в файл.

Проверка символа на повторяемость. - C++
Всем здравствуйте! При разработке программы столкнулся с проблемкой. Задача: На входе имеется массив символов, например,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
26.06.2012, 19:24 #2
Есть же isalpha, только не знаю, корректно ли с русскими символами будет работать
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
26.06.2012, 19:51  [ТС] #3
Цитата Сообщение от Schizorb Посмотреть сообщение
Есть же isalpha, только не знаю, корректно ли с русскими символами будет работать
спасибо, хорошая функция. Правда работает только с латинскими буквами и цифрами. при попытке запихать туда русский символ или знак препинания- вылетает с ошибкой
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.06.2012, 19:58 #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
http://en.cppreference.com/w/cpp/locale/isalpha
Evg
Эксперт CАвтор FAQ
17632 / 5856 / 376
Регистрация: 30.03.2009
Сообщений: 16,147
Записей в блоге: 26
26.06.2012, 20:03 #5
Сделай сам себе функцию, которая состоит либо из кучи if'ов, либо из комбинаций islpha, ispunct и всего того, что тебе нужно
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
26.06.2012, 20:58 #6
C++
1
unsigned char
помощь! русские символы будут от 127 до 255. Я гарантирую это!
Evg
Эксперт CАвтор FAQ
17632 / 5856 / 376
Регистрация: 30.03.2009
Сообщений: 16,147
Записей в блоге: 26
26.06.2012, 21:03 #7
Цитата Сообщение от Invader_Zim Посмотреть сообщение
помощь! русские символы будут от 127 до 255. Я гарантирую это!
От 127 (на самом деле от 128, но не суть) до 255 - в этот диапазон попадает 127 символов. В русском языке с учётом регистра имеется 66 символов. Чуешь неувязочку?
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
26.06.2012, 21:09 #8
Evg, тогда кто мешает wchar_t юзать?
Evg
Эксперт CАвтор FAQ
17632 / 5856 / 376
Регистрация: 30.03.2009
Сообщений: 16,147
Записей в блоге: 26
26.06.2012, 21:10 #9
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Evg, тогда кто мешает wchar_t юзать?
А что от этого изменится? Человек хочет наиболее простым образом проверить наличие недопустимых символов. Как твои замечания к этому относятся - хз
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
26.06.2012, 21:44 #10
Проще проверять на запрещенные символы, isdigit(), ispunct().
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
26.06.2012, 22:48 #11
можно перед строкой написать L,я думаю isalpha с UNICODE дружит
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
27.06.2012, 10:42 #12
alexey31415, эта может и дружит http://cplusplus.com/reference/std/locale/isalpha/, а сишная сомнительно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2012, 10:42
Привет! Вот еще темы с ответами:

Проверка вводимого символа - C++
Привет.Помогите,надо сделать так ,чтобы в консольной программе при вводе цифр,вместо букв,выдавало ошибку

Ввод символа в переменную типа INT - C++
Доброго времени суток. Подскажите самый эффективный способ борьбы с неверным вводом данных пользователем. А именно когда пользователя...

Ввод одного символа и строки с пробелом - C++
Подскажите, пожалуйста, как принять от пользователя с клавиатуры лишь один символ, не дав ему набрать больше, или просто не считать...

Как отследить ввод символа в программу - C++
Программа расчета площади поверхности и объема сферы,требуется ввод радиуса.что делать,если пользователь введет букву или ,например,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.06.2012, 10:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru