您的位置:首页 > Web前端

【剑指offer】题49:字符串转整数

2017-07-06 16:08 309 查看
注意 int 的正负取值范围不对称,

需要根据符号位分开判定是否正溢出或者负溢出

int strtoint_core(string str,int sign)
{
long long num(0);
for (auto iter = str.begin(); iter != str.end();++iter)
{
if ((*iter)<'0'||(*iter)>'9')
{
return -1;
}
num = num * 10 + ((*iter) - '0');
if (sign==1&&num > INT_MAX)
{
return -1;
}
else if (sign ==-1&&num<INT_MIN)
{
return -1;
}
}
return num;
}

int StrToInt(string str) {
if (str.size()==0)
{
return 0;
}
int sign(1);
if (str[0] == '-')
{
sign = -1;
str.erase(str.begin());
}
else if (str[0]=='+')
{
str.erase(str.begin());
}
int num = strtoint_core(str,sign);
if (num == -1)
{
return 0;
}
return num*sign;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: