把字符串转换成整数

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

class Solution {

public:
    int StrToInt(string str) {
    int flag = 1;         //设置符号标志
    long long ret = 0;   //考虑到返回值可能较大,定义为long long
   const char* strch=str.c_str();   //字符串转为char类型字符数组 

    while(isspace(*strch))    //如果含有空格,指针就向后走
    {
        strch++;
    }

    if (*strch == '+')    //如果是正数,不用处理
        strch++;
    if (*strch == '-')    //如果是负数,将符号标志取反
    {
        flag = -flag;
        strch++;
    }

    while(*strch)
    {
        if (isdigit(*strch))     //判断是否为数字
        {
            ret = ret * 10 + (*strch - '0')*flag;//字符数组中前边的数字在高位
            if ((ret > INT_MAX) || (ret < INT_MIN))  //考虑溢出
            {
                ret = 0;
                break;
            }
            strch++;
        }

        else    //不是合法的数值
        {

            ret=0;              //返回0
            break;
        }     
    }
    return (int)ret;
  }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值