is_integer? is_numeric?
От: Аноним  
Дата: 17.06.11 06:30
Оценка:
Привет!

Есть ли какие нибудь стандартные функции:

bool is_integer(const string& number) const; bool is_numeric(const string& number) const;



?
Re: is_integer? is_numeric?
От: jyuyjiyuijyu  
Дата: 17.06.11 08:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет!


А>Есть ли какие нибудь стандартные функции:


А>

А>bool is_integer(const string& number) const; А>bool is_numeric(const string& number) const; А>



А>?

костылик ?

bool is_integer(const string& number) { return strspn(s, "0123456789") == s.length(); }

Re: is_integer? is_numeric?
От: B0FEE664  
Дата: 17.06.11 08:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет!


А>Есть ли какие нибудь стандартные функции:


А>

А>bool is_integer(const string& number) const; А>bool is_numeric(const string& number) const; А>



А>?


Есть такая:
тут std::isdigit
и такая:
тут isdigit

А как у вас — думаю, что нет, потому как не понятно, что возвращать, если строка имеет такой вид:

number = "4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444";

is_integer(number) — true or false ?
И каждый день — без права на ошибку...
Re: is_integer? is_numeric?
От: breee breee  
Дата: 17.06.11 08:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет!


А>Есть ли какие нибудь стандартные функции:


А>

А>bool is_integer(const string& number) const; А>bool is_numeric(const string& number) const; А>



А>?


Стандартных вроде нет.

Можно реализовать как-то так:

bool is_numeric(std::string number) { char* end = 0; std::strtod(number.c_str(), &end); return end != 0 && *end == 0; } bool is_integer(std::string number) { return is_numeric(number.c_str()) && std::strchr(number.c_str(), '.') == 0; }



http://ideone.com/Ia36l
Re[2]: is_integer? is_numeric?
От: breee breee  
Дата: 17.06.11 08:56
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

А>>?

J>костылик ?
J>

J>bool is_integer(const string& number) J>{ J> return strspn(s, "0123456789") == s.length(); J>} J>



is_integer("-1");


Re: is_integer? is_numeric?
От: Pavel Dvorkin Россия  
Дата: 17.06.11 09:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет!


А>Есть ли какие нибудь стандартные функции:


А>

А>bool is_integer(const string& number) const; А>bool is_numeric(const string& number) const; А>



А>?


is нет ИМХО, а проверить все же можно

strtol вернет тебе этот integer (long, точнее) и заодно ответит, смогла ли распарсить.
strtod сделает то же и для текстовой записи вещественного числа.
With best regards
Pavel Dvorkin
Re[2]: is_integer? is_numeric?
От: jyuyjiyuijyu  
Дата: 17.06.11 09:04
Оценка: -3

bool is_integer(const string& number) { return strspn(s, "-0123456789") == s.length(); }

Re[3]: is_integer? is_numeric?
От: Pavel Dvorkin Россия  
Дата: 17.06.11 09:10
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>

J>bool is_integer(const string& number) J>{ J> return strspn(s, "-0123456789") == s.length(); J>} J>



Тихий ужас!

char* s = "--1234-7654-890--"
With best regards
Pavel Dvorkin
Re[4]: is_integer? is_numeric?
От: jyuyjiyuijyu  
Дата: 17.06.11 09:13
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, jyuyjiyuijyu, Вы писали:


J>>

J>>bool is_integer(const string& number) J>>{ J>> return strspn(s, "-0123456789") == s.length(); J>>} J>>



PD>Тихий ужас!


PD>char* s = "--1234-7654-890--"


)))) да да состояние сонное ступил
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.