![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
shinoby |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Как осуществлять проверку введенных данных на C++ (т.е. было ли введено число или символ одного из алфавитов)?
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
можно воспользоваться функциями типа isalpha() и isdigit()
|
|||
|
||||
shinoby |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Функция isdigit(), она позволяет работать с любым пределом числовых величин (125, -64, 3 ...) или область ее ограничена (0 .. 9)? Я сейчас рассматриваю вариант: atoi() и др. подобные ей. |
|||
|
||||
t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
shinoby, isdigit - проверяет, а atoi (ansi to integer) непосредственно переводит.
-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Тогда тебе нужна strtoul
|
||||||
|
|||||||
shinoby |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Решение проблемы найдено, всем спасибо за обсуждение!!!
|
|||
|
||||
inside_pointer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: -1 Всего: 12 |
Русские буквы не будут работать, все эти функции для англичан
![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
О! А нельзя ли популярно объяснить отличие русских ЦИФР от английских? А что касается русских букв, то если используется не доисторический компилятор, и если аффтор не забыл установить локаль (setlocale( LC_ALL,"")) - то все русские буквы отлично распознаются, и именно как буквы ![]() По крайней мере у меня работает - наверное я англичанин ![]() Это сообщение отредактировал(а) xvr - 9.3.2008, 10:59 |
|||
|
||||
comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
xvr, ну зачем же переходить на Си??
вот путь для си++:
причем эти функции подключаются чисто хедерами, поскольку являются обёртками над шаблонами iostream, библиотеки линковать не надо. Это сообщение отредактировал(а) comcon1 - 10.3.2008, 13:04 |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
'Чисто хедер' boost сам является библиотекой, которую как минимум надо будет скачать и поставить. Я не думаю, что эти усилия стоят обеспечения 'концептуальной целостности' С++ ![]() ![]()
Предложение поставить boost и сделать проверку в 'правильных' С++ терминах вместо вызова strtod очень смахивает на такую вот 'экономию мела'. Такое предложение имеет смысл если и ТОЛЬКО если в проекте УЖЕ используется boost и исключения. |
||||||
|
|||||||
inside_pointer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: -1 Всего: 12 |
Ок Это сообщение отредактировал(а) inside_pointer - 11.3.2008, 04:18 |
||||
|
|||||
t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
xvr, грамотно!!!
-------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: нет Всего: 17 |
Ну, в общем, ты, конечно, прав. Если буста нет, то ставить канешн. геморой. Но, так сказать, на будущее, если программа будет в С++-стайле, то так как я написал, намного проще.
Тем более, что можно самому задавать как одни типы переводятся в другие. И использовать для всех проверок написанный мною блок, а то как одни типы переводятся в другие, можно инкапсулировать в каком-нить модуле, чтобы их в глаза не видеть. ЗЫ. Для юзания этого блока, вроде, буст можно просто скопировать и даже не собирать)) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |