zoukankan      html  css  js  c++  java
  • 【面试题049】把字符串转换成整数

    【面试题049】把字符串转换成整数
    题目:
        用C++定义一个不可以被继承的类。
     
    思路一:
        正整数的最大值是0x7FFF FFFF,最小的负整数是0x8000 0000,
    因此我们需要分两种情况来分别判断整数是否发生上溢出和下溢出。
     
    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
    67
    68
    69
    70
    71
     
    #include <iostream>

    using namespace std;

    enum Status {kValid = 0, kInvalid};
    int g_nStatus = kValid;

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

                if ( (!minus && num > 0x7FFFFFFF)
                        || (minus && num < (signed int)0x80000000) )
                {
                    num = 0;
                    break;
                }
                digit++;
            }
            else
            {
                num = 0;
                break;
            }
        }
        if (*digit == '')
        {
            g_nStatus = kValid;
        }
        return num;
    }

    int StrToInt(const char *str)
    {
        g_nStatus = kInvalid;
        long long num = 0;

        if (str != NULL && *str != '')
        {
            bool minus = false;
            if (*str == '+')
            {
                str++;
            }
            else if(*str == '-')
            {
                str++;
                minus = true;
            }
            if (*str != '')
            {
                num = StrToIntCore(str, minus);
            }
        }
        return (int)num;
    }

    int main()
    {
        char *str = "-123456";
        char *str1 = "123456";
        cout << StrToInt(str) << endl;
        cout << StrToInt(str1) << endl;
        return 0;
    }
  • 相关阅读:
    锚的应用
    有关于MP3音频文件的编码解码资料吗
    自定义web.config配置节 (转)
    HTC 文件
    Asp.Net音频文件上传和播放
    dotnet下用c#编写下载器
    自动滚屏代码
    agsXMPP分析:agsXMPP Namespace
    Socket网络编程学习笔记(1)
    (♂)程序打包工具setup2go使用教程
  • 原文地址:https://www.cnblogs.com/codemylife/p/3774808.html
Copyright © 2011-2022 走看看