题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
思路://判断字符串是否为正确数字格式
//练习了对指针的指针的使用
//参考书上的方法
//*和++哪个优先级更高?一样高,处理顺序自右向左
//所以 ++*string 等同于(*string)++
//练习了对指针的指针的使用
//参考书上的方法
//*和++哪个优先级更高?一样高,处理顺序自右向左
//所以 ++*string 等同于(*string)++
#include <iostream>
using namespace std;
void scanDigits(char** string)
{
while(**string!='\0'&&**string>='0'&&**string<='9')
(*string)++;
}
bool isExp(char** string)
{
++*string;
if(**string=='+'||**string=='-')
{
++*string;
}
if(**string=='\0')
return false;
scanDigits(string);
if(**string=='\0')
return true;
return false;
}
bool isNumeric(char* string)
{
bool isNum=true;
if(string==NULL)
return false;
if(*string=='+'||*string=='-')
string++;
if(*string=='\0')
return false;
scanDigits(&string);
if(*string=='.')
{
string++;
scanDigits(&string);
if(*string=='\0')
return true;
else if(*string=='e'||*string=='E')
isNum=isExp(&string);
}
else if(*string=='e'||*string=='E')
isNum=isExp(&string);
return isNum&&*string=='\0';
}
void main()
{
char a[100]="-25.522E25255";
cout<<isNumeric(a);
system("pause");
}