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 };
  • 相关阅读:
    关于slot标签的使用
    vue组件
    template和component的理解(待更正)
    input 的属性autocomplete
    关于render: h => h(App)和components: { App }的区别
    关于vue的简单知识
    获取页面跳转携带的参数
    关于跨域的简单想法(此想法是错误的,特此备注)
    关于jq建立类似与双向绑定的函数
    关于jq将一个页面引入另一个页面,类似与组件化的解决方案
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11237696.html
Copyright © 2011-2022 走看看