От:
Аноним
Дата: 17.06.11 06:30
Оценка:
Привет!
Есть ли какие нибудь стандартные функции:
bool is_integer(const string& number) const ;
bool is_numeric(const string& number) const ;
?
Re: is_integer? is_numeric?
Здравствуйте, Аноним, Вы писали:
А>Привет!
А>Есть ли какие нибудь стандартные функции:
А>А>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?
Здравствуйте, Аноним, Вы писали:
А>Привет!
А>Есть ли какие нибудь стандартные функции:
А>А>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?
Здравствуйте, 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?
Здравствуйте, Аноним, Вы писали:
А>Привет!
А>Есть ли какие нибудь стандартные функции:
А>А>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?
bool is_integer(const string& number)
{
return strspn(s, "-0123456789" ) == s.length();
}
Re[3]: is_integer? is_numeric?
Здравствуйте, 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?
Здравствуйте, 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--"
)))) да да состояние сонное ступил
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить