c++ 实现atoi()函数

2015-07-20 17:05:57 ? 作者: ? 浏览: 2

1. 问题描述

  实现c++函数库中atoi()函数,要考虑到各种特殊情况:
  

空字符串。 +和-号。 字符串前中后n个空格。 溢出。 非数字字符。

2. 解决方案

  转换过程并不复杂,复杂的是要考虑到众多特殊情况。

int myAtoi(string str) {
        if(str.length() == 0) return 0; //空串

        bool isNeg = false;
        long re = 0;
        int i=0,cnt;
        for(;i
   
    = '0' && str[i] <= '9') re = str[i] - '0',cnt=1; //记录数字的位数 else return 0; i++; for(; i < str.length(); i++) { if (cnt > 10) break; //大于整数所表示的最大位数,跳出循环 if(str[i] < '0' || str[i] > '9') break; re = re*10 + (str[i] - '0'),cnt++; } //溢出判断 if(re > INT_MAX && !isNeg) return INT_MAX; else if(isNeg &&re*(-1) < INT_MIN) return INT_MIN; return isNeg?re*(-1):re; }
   

?

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: