模拟实现atoi

来源:互联网 发布:全年销售额数据报表 编辑:程序博客网 时间:2024/05/22 15:07
//注意到细节问题:/*一、函数参数1、形参虚const修饰2、注意对形参指针判空二、需要考虑到的细节1、负数和0(注意区别传入字符‘0’和异常时返回值)2、空字符串3、溢出问题4、输入字符串非非数字字符*/int G_flag =0;//区别空串long long strToDig(const char*digit, bool minus){    long long num = 0;    if (*digit == '\0')    {        G_flag = 1;//区别空串        cout << "空字符串" << endl;    }    while (*digit != '\0')    {        if ('0'<=*digit&&*digit<'9')        {            int flag = minus ? -1 : 1;            num = num * 10 + flag*(*digit - '0');            if (!minus&&num>0x7FFFFFFF ||minus&&num<(signed)0x80000000)//若前面有没“-”号,则minus为false;!minus即可判断            {                cout << "转换整数溢出" << endl;                num = 0;                break;            }            digit++;        }        else        {            num = 0;            break;        }    }    return num;}int StrToInt(const char*string){    long long num = 0;    bool minus = false;    if (string != NULL&&*string != '\0')    {        if (*string == '+')            string++;        else if (*string == '-')        {            minus = true;            string++;        }    }    //开始转换;    if (string != '\0')    {        num = strToDig(string, minus);    }    return (int)num;}
原创粉丝点击