zoukankan      html  css  js  c++  java
  • 字符串转换成整形值

    字符串转换成整形值,能够考虑的异常因素有很多。编写代码之前设计测试用例很有帮助。

      1 enum STATUS{STRNULL=0, STREMPTY, STRINVALID, STROVERFLOW, STRVALID};
      2 enum SIGN{NEGATIVE=0, POSITIVE};
      3 enum STATUS status = STRVALID;
      4 enum SIGN sign = POSITIVE;
      5 int str2int(const char *str)
      6 {
      7     long long num = 0;
      8 
      9     if (str == NULL)
     10     {
     11         status = STRNULL;
     12 
     13         return 0; 
     14     }
     15     while (*str == ' ')
     16     {
     17         str++;
     18     }
     19 
     20     if (*str == '-' || *str == '+')
     21     {    
     22         if (*str == '-')
     23         {
     24             sign = NEGATIVE;
     25         }
     26         if ( *(str+1) == '')
     27         {
     28             status = STREMPTY;
     29 
     30             return 0; 
     31         }
     32 
     33         str++;
     34     }
     35     else if (*str == '')
     36     {
     37         status = STREMPTY;
     38 
     39         return 0; 
     40     }
     41     else
     42     {
     43         while(*str != '')
     44         {
     45             if (*str >= '0' && *str <= '9')
     46             {
     47                 num = num * 10 + *str - '0';
     48 
     49                 if (num > 0x80000000)
     50                 {
     51                     status = STROVERFLOW;
     52 
     53                     return 0; 
     54                 }
     55             }
     56             else
     57             {
     58                 status = STRINVALID;
     59 
     60                 return 0; 
     61             }
     62 
     63             str++;
     64         }
     65 
     66     }
     67     
     68     if (sign == NEGATIVE)
     69     {
     70         num = -num;
     71     }
     72 
     73     return (int)num;
     74 
     75 }
     76 
     77 int main(int argc, char** argv)
     78 {
     79         char *pString = "   -2147483648";
     80     
     81         int num = str2int(pString);
     82 
     83     switch (status)
     84     {
     85     case STRVALID:
     86         {
     87             cout << num << endl;
     88         }
     89         break;
     90     case STREMPTY:
     91         {
     92             cout << "Empty str" << endl;
     93         }
     94         break;
     95     case STRNULL:
     96         {
     97             cout << "NULL str" << endl;
     98         }
     99         break;
    100     case STROVERFLOW:
    101         {
    102             cout << "Overflow str" << endl;
    103         }
    104         break;
    105     default:
    106         {
    107             cout << "NONE digit str" << endl;
    108         }
    109     }
    110     
    111     system("pause");
    112 
    113     return 0;
    114 }
  • 相关阅读:
    IE8的parseInt
    powershell小工具
    判断请求是不是ajax
    常用命令行/批处理
    服务器导出服务器时间转换浏览器端时区
    用批处理批量编译多个解决方案(.sln)
    shell脚本批量调用git命令
    批处理(.bat)For命令使用
    360doc的文章不能复制的解决办法
    XSD笔记
  • 原文地址:https://www.cnblogs.com/alpha19881007/p/201309171702_byalpha.html
Copyright © 2011-2022 走看看