Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Является-ли строка числом

629
01 марта 2002 года
TekiL
19 / / 20.09.2000
как проверить является-ли то что ввел пользователь числом. я могу проверить ввел-ли он цифру (просто в ascii от 48 до 58 кажется - цифры). точно-также можно было-бы
поочереди начиная например слева проверять каждый символ (правда не знаю какая фунцция в c++ позволяет это сделать)... но это долго и муторно, писать цикл... нет-ли другого решения?! спасибо

зы проблема еще в том что скажем Паскаль, если ввести вместо целого числа стринг (слово) просто вешал комп а цэ спокойно воспринемает букву "A" как 65 и продолжает работать )

[ Это Сообщение было отредактировано mike в 2002-03-01 1451 ]
409
04 марта 2002 года
Ramzes
163 / / 20.09.2000
По моему придется делать цикл.
Есть одна функция:
bool isdigit(int c);
она проверяет только один символ...
629
04 марта 2002 года
TekiL
19 / / 20.09.2000
Цитата:

On 2002-03-04 0751, Ramzes wrote
По моему придется делать цикл.
Есть одна функция
bool isdigit(int c);
она проверяет только один символ...


окей. спасибо

897
11 марта 2002 года
manin
1 / / 20.01.2000
посмотри функции atoi и atol в stdlib.h
=-)
Аноним
/*******************************************/
/* This program appears to define a stream */
/* /............/ */
/*******************************************/

#include <iostream.h>
#include <lvp\String.h>
#include <stdlib.h>

int main()
{
String StringOrNum;
cin >> StringOrNum;
int IfNum = atoi(StringOrNum.c_str()); // defines StringOrNum as a int type through converting it into C-language string style
if(IfNum != 0)
cout <<&quot;User entered a number.&quot; << endl;
else
cout <<&quot;User entered a string (or character).&quot; << endl;

cout << endl;
return(0);
}
409
05 апреля 2002 года
Ramzes
163 / / 20.09.2000
Цитата:

On 2002-04-04 1959, Anonymous wrote
/*******************************************/
/* This program appears to define a stream */
/* /............/ */
/*******************************************/

#include <iostream.h>
#include <lvpString.h>
#include <stdlib.h>

int main()
{
String StringOrNum;
cin >> StringOrNum;
int IfNum = atoi(StringOrNum.c_str()); // defines StringOrNum as a int type through converting it into C-language string style
if(IfNum != 0)
cout <<&quot;User entered a number.&quot; << endl;
else
cout <<&quot;User entered a string (or character).&quot; << endl;

cout << endl;
return(0);
}



Корявый код. Никакой оптимизации. Одни преобразования...

475
05 апреля 2002 года
Winnie
90 / / 20.03.2000
atoi распознает начальное число, пропуская пробелы перед числом (т.е. atoi(&quot; 1234asdf&quot;) вернет 1234) так что проверка на число не совсем корректная - можно попробовать функию strtol - она возвращает указатель на символ на котором остановился разбор числа - если он '/0' значит это конец строки и это число если нет то нет
а если проверять надо только число из цифр (не отрицательное и не вещественное) то можно и цикл написать:
for(char* str = ваша_строка;*str;str++){
if (!(isdigit(*str))) return 0; // не число
}
return 1;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог