class Solution {
public:
int StrToInt(string str) {
const int len = str.length(); //字符串长度
if (len == 0) return 0;
int i = 0;
while (i < len && str[i] == ' ') { ++i; } // 排除开头的空格
if (i == len) return 0;
if (!isdigit(str[i]) && str[i] != '+' && str[i] != '-') return 0; // 判断是否是数字isdigit
bool neg = str[i]=='-' ? true : false;
i = isdigit(str[i]) ? i : i+1;
long long ans = 0L;
while (i < len && isdigit(str[i])) {
ans = ans * 10 + (str[i++]-'0');
if (!neg && ans > INT_MAX) { // 如果该函数为正值,最大为最大值
ans = INT_MAX;
break;
}
if (neg && ans > 1L + INT_MAX) { // 为负值可以为 最大值+1
ans = 1L + INT_MAX;
break;
}
}
if (i != len) return 0; // 不要此处,就是atoi()库函数的实现
return !neg ? static_cast<int>(ans) : static_cast<int>(-ans);
}
};