//leetcode string to integer
#include <iostream>
using namespace std;
class Solution{
public:
int atoi( string s){
if(s.length()==0)
return 0;
int i=0, sign=1;
while(s[i]==' ')
i++;
if(s[i]=='-'){
sign=-1;
i++;
}
else if(s[i]=='+')
i++;
_int64 num=0; //int\long的范围:-2147483648~2147483647,_int64相当于long long,VC中不支持long long。
num=10*num+(s[i]-'0');
if(num>INT_MAX)
return sign==1?INT_MAX:INT_MIN;
}
else
break;
i++;
}
return sign*num;
}
};
int main(){
string s(" -2147483649");
Solution solution;
cout<<solution.atoi(s)<<endl;
return 0;
}
#include <iostream>
using namespace std;
class Solution{
public:
int atoi( string s){
if(s.length()==0)
return 0;
int i=0, sign=1;
while(s[i]==' ')
i++;
if(s[i]=='-'){
sign=-1;
i++;
}
else if(s[i]=='+')
i++;
_int64 num=0; //int\long的范围:-2147483648~2147483647,_int64相当于long long,VC中不支持long long。
//否则int num=0;输入:-2147483649,输出:2147483647
while( s[i]!='\0'){
if('0'<=s[i]&&s[i]<='9'){num=10*num+(s[i]-'0');
if(num>INT_MAX)
return sign==1?INT_MAX:INT_MIN;
}
else
break;
i++;
}
return sign*num;
}
};
int main(){
string s(" -2147483649");
Solution solution;
cout<<solution.atoi(s)<<endl;
return 0;
}