zoukankan      html  css  js  c++  java
  • 把字符串转换成整数

    功能测试:输入的字符字符串表示正数、负数、0;

    边界值:最大正整数,最小负整数

    特殊输入测试:输入字符串为NULL指针,空字符串、字符串中有非数字字符...

     1 class Solution {
     2 public:
     3     enum Status{kValid = 0,kInvalid};
     4     int g_nStatus = kValid;//标记是否是非法输入
     5     int StrToInt(string str) {
     6         g_nStatus = kInvalid;////初始标记为非法输入
     7         long long num=0;//存出结果的
     8         const char* cstr=str.c_str();//变成标准c字符数组,最后一个元素是''
     9         //判断是是否是空指针和空字符串
    10         if(cstr!=nullptr && *cstr!=''){
    11             //先处理符号位
    12             int minus=1;
    13             if(*cstr=='-'){
    14                 minus=-1;
    15                 cstr++;
    16             }
    17             else if(*cstr == '+') cstr++;
    18             //开始处理其余的位
    19             while(*cstr!=''){
    20                 //注意''==0,‘ ’==32,'0'==48,‘A’==65,‘a’==97字符的比较用的是ascii码
    21                 if(*cstr>'0' && *cstr<='9'){
    22                     g_nStatus = kValid;
    23                     num = num*10 + (*cstr - '0');
    24                     cstr++;
    25                     //数据溢出
    26                     //如果是整数,num>int最大的数时;或负数,小于int最小的数时
    27                     //一个16进制数可以有4位二进制来表示,也就是4bit,那么8位16进制数由32位二进制表示
    28                     //正好是int型的大小,第一个是7=0111,也即是第一位是0后面全是1
    29                     if(((minus>0) && (num > 0x7FFFFFFF))||((minus<0) && (num > 0x80000000))){
    30                         g_nStatus = kInvalid;
    31                         num=0;
    32                         break;
    33                     }
    34                 }
    35                 else{
    36                     g_nStatus = kInvalid;
    37                     num=0;
    38                     break;
    39                 }
    40             }
    41             if(g_nStatus==kValid) num=num*minus;
    42         }
    43         return (int)num;
    44     }
    45 };
  • 相关阅读:
    Java 异常
    【转】Java 内部类总结
    【转】Java中的static关键字解析
    【转】事务及事务隔离级别
    【转】事务并发的问题
    【转】hibernate对象三种状态
    iOS指南针
    CoreLocation 定位
    swift 2.2 语法 (下)
    swift 2.2 语法 (中)
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11237696.html
Copyright © 2011-2022 走看看