表示数值的字符串

判断一个字符串是否表示数值,可以为整数、小数,可以带科学计数法形式。


一个数值的表示:[符号]若干个整数[.[若干个整数]][e|E[符号]若干个整数]


C++代码:

void scanDigit(char* &String) {// 扫描字符串,直到不是数字为止
    while('\0' != *String && '0' <= *String && *String <= '9')
        ++String;
}
bool isExponential(char* &String) {// 如果是e或者E开始,科学计数法
    if('e' != *String && 'E' != *String)
        return false;
    ++String;
    if('+' == *String || '-' == *String)
        ++String;
    if('\0' == *String)
        return false;
    scanDigit(String);
    if('\0' == *String)
        return true;
    else return false;
}
bool isNumeric(char* String) {// <span style="font-size:24px;">判断一个字符串是否表示数值</span>
    if(NULL == String)
        return false;
    if('+' == *String || '-' == *String)
        ++String;
    if('\0' == *String)
        return false;

    bool isNumber = true;

    scanDigit(String);
    if('\0' != *String) {
        if('.' == *String) {// 是小数
            ++String;
            scanDigit(String);
            if('e' == *String || 'E' == *String) {
                isNumber = isExponential(String);
            }
        } else if('e' == *String || 'E' == *String) { // 不是小数是科学计数法
            isNumber = isExponential(String);
        } else
            isNumber = false;
    }
    return (isNumber && ('\0'==*String));
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值