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...
Пока на собственное сообщение не было ответов, его можно удалить.