字符串转换为整数
要考虑很多种可能的输入并妥善处理,跳过前导空格。
空串,只有正负号返回0。
若字符串中有不是数字的,则返回之前已经转换好的数字部分对应的整数。
还要判断转换的整数是否会溢出,若溢出则返回最大或最小的整数。
int atoi(string str) {
if (str.empty()) {
return 0;
}
int sign = 1;
long long num = 0;
size_t i = 0;
size_t n = str.length();
while (str[i] == ' ' && i < n) i++;
if (str[i] == '+')
{
i++;
}
else if (str[i] == '-'){
sign = -1;
i++;
}
while (i < n) {
if (!::isdigit(str[i]))
break;
num = num * 10 + (str[i] - '0');
if (num > INT_MAX)
{
return (sign == 1) ? INT_MAX : INT_MIN;
break;
}
i++;
}
return sign * (int)num;
}