class Solution {
public:
int strToInt(string str) {
if(str.size()==0) return 0;
long sum=0; // 长整型,防止溢出
bool sign_flag=false;
int i=0;
while(str[i]==' ') // 跳过空格
i++;
if(!isdigit(str[i]) && str[i]!='+' && str[i]!='-')
return 0;
if(str[i]=='-'){
sign_flag=true;
i++;
}
else if(str[i]=='+')
i++;
while(isdigit(str[i])){
sum=sum*10+str[i]-'0';
// -----------------------------
if(sign_flag && -sum<INT_MIN){
return INT_MIN;
}
else if(!sign_flag && sum>INT_MAX)
return INT_MAX;
// -----------------------------
i++;
}
return sign_flag?-sum:sum;
}
};