Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 21:59   #1
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию Проверка в строки на число типа int

как с помощью if проверить в строке AnsiString, может ли эта строка быть преобразована в тип int (или друге типы boll, float и т д).
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Старый 30.05.2011, 22:53   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Если в строке есть символы, отличные от цифр, знаков "+", "-" и "."/"," (десятичной точки/запятой), то нельзя. Плюс нюансы - в int не может быть десятичной точки, знак +/- может быть только в начале, десятичная точка может быть только одна. Ну еще возможны записи типа 3.1006277E+1.
Ну или самый веселый вариант:
Код:
try
 {
 double d = str.ToDouble();
 }
catch (const ErrType& err)
 {
 MessageBox(0, "!!!", "Нельзя!!!", MB_OK);
 }
где ErrType - тип исключения, генерируемый при ошибке ToDouble и подобных (точно не помню, посмотрите в описании функции).
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 31.05.2011, 11:01   #3
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Цитата:
boll
что это за тип ?

А по теме можно просто составить символьный массив цифр и сверять с этим массивом каждый символ данной строки
Hemul вне форума Ответить с цитированием
Старый 01.06.2011, 07:44   #4
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

Конечно же спасибо вам за помощь. Но к созалению я знаю конструкцию try catch (const ErrType& err) <-покрайней мере это перехват возникших исключений. В моём случае это неможно использовать т.к. таких проверок будет несколько. И в каждом случае при наличии нечисловой строки мне нужно проводить разные действия. И писать их в такую конструкцию конечно можно но это приведет нечитаемости листинга.
--------------------------------------------
Извените за неправильное написание типа bool.
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Старый 01.06.2011, 08:28   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> В моём случае это неможно использовать

а кто мешает сделать функцию (работающую на основе вышепреведенного кода с try catch) и возвращающую true/false?

И если речь про Билдер, там есть (должны быть) функции типа StrToIntDef(), StrToFloatDef() и подобные.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.06.2011, 13:32   #6
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

Спасибо а я чтото не подумал про функцию слазу...
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка значения из столбца типа INT mike_tihomirov SQL, базы данных 2 07.04.2011 21:31
Делфи и ассемблер. Не работают прерывания типа Int Я_и Общие вопросы Delphi 8 11.12.2010 13:13
Проблема с функциями(передача масива в функцию типа int) sekator Общие вопросы C/C++ 4 27.07.2010 22:13
Преобразования типа LPCSTR -> int без потери данных coNsept Общие вопросы C/C++ 2 20.05.2010 20:49
Конвертация типа string в int Mixasik Общие вопросы C/C++ 10 25.04.2009 02:58