题解 | #将整数字符串转成整数值#

将整数字符串转成整数值

http://www.nowcoder.com/questionTerminal/0c630b57e3d144379508d63d8eb65854

#include <iostream>
#include <limits.h>
using namespace std;

int main() {
    string str;
    cin >> str;
    int flag = 1;
    size_t pos = 0;
    long long sum = 0;
    
    if('0' == str[pos])
    {
        goto end;
    }

    if('-' == str[pos])
    {
        flag = -1;
        ++pos;
    }
    while(pos < str.size())
    {
        if(str[pos] >= '0' && str[pos] <= '9')
        {
            sum = sum*10 + str[pos] - '0';
            ++pos;
        }
        else
        {
            goto end;
        }

    }
    sum *= flag;
    if(sum > INT_MAX || sum < INT_MIN) //引入头文件limits.h,该文件中定义了各种数据类型范围,相对于直接与具体某个数比较更具可移植性
    {
        goto end;
    }
    cout << sum << endl;
    
    return 0;
end:
    cout << 0 << endl;

    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-12 18:14
RT,这周五就是情人节了,前女友给我发了消息,我该不该回?
Yoswell:原则上来说让她滚,但是本着工作很累下班想吃瓜的心态,我觉得你可以回一下
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务