zoukankan      html  css  js  c++  java
  • 17.把字符串转换成整数[atoi]

    【题目】

    把字符串转换成整数,需要考虑字符串有效性。

    代码】

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     

    bool bValid = true;

    int str2int_core(const char *digit, bool minus)
    {
        
    long long sum = 0;
        
    int flag = minus ? -1 : 1;
        
    while(*digit != '')
        {
            
    if (*digit >= '0' && *digit <= '9')
            {
                sum = 
    10 * sum + flag * (*digit - '0');

                
    // whether overflow ?
                if ((!minus && sum > (signed int)0x7fffffff)
                        || (minus && sum < (
    signed int)0x80000000))
                {
                    sum = 
    0;
                    
    break;
                }
                digit ++;
            }
            
    else
            {
                sum = 
    0;
                
    break;
            }
        }

        
    if (*digit == '')
        {
            bValid = 
    true;
        }
        
    return (int)sum;
    }

    int str2int(const char *str)
    {
        bValid = 
    false;
        
    long long sum = 0;
        
    if (NULL == str || *str == '')
            
    return (int)sum;
        
    bool minus = false;
        
    if (*str == '+')
        {
            str++;
        }
        
    else if (*str == '-')
        {
            str++;
            minus = 
    true;
        }
        
    if (*str == '')
            
    return  (int)sum;

        
    return str2int_core(str, minus);
    }

    void test_case(const char *str)
    {
        
    int sum = str2int(str);
        
    if (bValid)
            cout << sum << endl;
        
    else
            cout << 
    "Invalid input!" << endl;
    }

    【参考】

    http://zhedahht.blog.163.com/blog/static/25411174200731139971/

    个人学习笔记,欢迎拍砖!---by hellogiser

    Author: hellogiser
    Warning: 本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接。Thanks!
    Me: 如果觉得本文对你有帮助的话,那么【推荐】给大家吧,希望今后能够为大家带来更好的技术文章!敬请【关注】
  • 相关阅读:
    SpringJDBC源码分析记录
    RHEL7使用NAT方式上网
    SQL优化参考
    IDEA引入Gradle工程小记
    OAuth2.0原理与实现
    sudo用法记录
    ZooKeeper单机伪集群搭建与启动
    Netty实践与NIO原理
    Spring Security原理与应用
    Winform 生成不需要安装的exe可执行文件 ILMerge使用
  • 原文地址:https://www.cnblogs.com/hellogiser/p/3738741.html
Copyright © 2011-2022 走看看