Является-ли строка числом
поочереди начиная например слева проверять каждый символ (правда не знаю какая фунцция в c++ позволяет это сделать)... но это долго и муторно, писать цикл... нет-ли другого решения?! спасибо
зы проблема еще в том что скажем Паскаль, если ввести вместо целого числа стринг (слово) просто вешал комп а цэ спокойно воспринемает букву "A" как 65 и продолжает работать )
[ Это Сообщение было отредактировано mike в 2002-03-01 1451 ]
Есть одна функция:
bool isdigit(int c);
она проверяет только один символ...
Цитата:
On 2002-03-04 0751, Ramzes wrote
По моему придется делать цикл.
Есть одна функция
bool isdigit(int c);
она проверяет только один символ...
окей. спасибо
=-)
/* 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 <<"User entered a number." << endl;
else
cout <<"User entered a string (or character)." << endl;
cout << endl;
return(0);
}
Цитата:
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 <<"User entered a number." << endl;
else
cout <<"User entered a string (or character)." << endl;
cout << endl;
return(0);
}
Корявый код. Никакой оптимизации. Одни преобразования...
а если проверять надо только число из цифр (не отрицательное и не вещественное) то можно и цикл написать:
for(char* str = ваша_строка;*str;str++){
if (!(isdigit(*str))) return 0; // не число
}
return 1;