Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Если строка число? 
:(
    Опции темы
Javoracle
  Дата 19.6.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.12.2006
Где: Ново- Попуа- Нова я Гвинея

Репутация: нет
Всего: нет



Я понимаю, что вопрос ламерский, но я никак не не найду функцию, которая бы проверяла, что строка-число. Всё обыскал никак не не могу найти! Уже собираюсь садится за написание своей функции с перебором каждого символа и проверкой на 0..9. Есть ли что-то что просто раз и навсегда сделает всё за меня?

Код

String s="900";

if( s.isInt()) i=s.toInt();


Это сообщение отредактировал(а) Javoracle - 19.6.2008, 23:54
PM MAIL   Вверх
Alca
Дата 20.6.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



У тебя s - строка.
Код

for (int i = 1; i < s.Length(); i ++) {
    if (s[i] == "0") {
        //
    }
    if (s[i] == "1") {
        //
    }
    //....
    if (s[i] == "9") {
        //
    }
}

Header File
ctype.h, mbstring.h

Category
Classification Routines

Prototype
int isdigit(int c);
int iswdigit(wint_t c);
int _ismbcdigit(unsigned int c);

Description
Tests for decimal-digit character.
isdigit is a macro that classifies ASCII-coded integer values by table lookup. The macro is affected by the current locale’s LC_CTYPE category. For the default C locale, c is a digit (0 to 9).
You can make this macro available as a function by undefining (#undef) it.

Return Value
isdigit returns nonzero if c is a digit.
_ismbcdigit returns true if and only if the argument c is a single-byte representation of an ASCII digit.

Это сообщение отредактировал(а) Alca - 20.6.2008, 00:12


--------------------
PM WWW ICQ Skype Jabber   Вверх
586
Дата 20.6.2008, 01:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Функция TryStrToInt
PM   Вверх
mrbrooks
Дата 20.6.2008, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Так же можно использовать функцию StrToIntDef  smile 
PM MAIL   Вверх
system
Дата 22.6.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: нет
Всего: 2



функция то копеечная,  упрощенная версия
Код

#include <iostream>
#include <string>
using namespace std;
const bool is_num( const std::string source ) {
 std::string::size_type  ps = source.find_first_not_of( "0123456789.");
 return ( ps == std::string::npos );
}

 int main( int argc, char **argv )
{
 std::cout.setf( std::ios::boolalpha );
 cout << is_num( "12342" ) << std::endl;
 cout << is_num( "12342.0" ) << std::endl;
 cout << is_num( "12342a" ) << std::endl;
 return 0;
}

PM MAIL   Вверх
Palladin
Дата 22.6.2008, 22:21 (ссылка)  | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Код

String s;
int k;
try{k=StrToInt(s);}
catch(...)
{ShowMessage("Это не число");}
else {
//тут работаешь дальше, если else то число
}

для вещественных числе придется модифицировать, но эт просто...

Это сообщение отредактировал(а) Palladin - 22.6.2008, 22:29


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
LastAngel
Дата 23.6.2008, 09:13 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.4.2008

Репутация: нет
Всего: нет



Есть вроде стандартная C-ая функция определения является ли символ числом ...

#include <ctype.h>

int isdigit(int c); 

описания подобных функций 
http://www.sensi.org/~alec/man/man3/isdigit.html

Это сообщение отредактировал(а) LastAngel - 23.6.2008, 09:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.