zoukankan      html  css  js  c++  java
  • c++ 实现atoi()函数

    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<str.length(); i++) if(str[i] != ' ') break; //跳过字符串前全部的空格
    
            if(str[i] == '-')  //推断正负
                isNeg = true;
            else if (str[i] == '+') isNeg = false;
            else if(str[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;
        }
  • 相关阅读:
    Random类
    类型转换
    一个简单的Web登录程序
    第一个Servlet程序
    使用MyEclipse开发 服务器的部署方式(续)
    MyEclipse配置
    Tomact问题
    Tomact配置
    HTTP基础:URL格式、 HTTP请求、响应、消息
    关闭二维码
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5405878.html
Copyright © 2011-2022 走看看