面試題67:把字符串轉換成整數
題目:請你寫一個函數StrToInt,實現把字符串轉換成整數這個功能。當然,不能使用atoi或者其他類似的庫函數。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
enum Status {kValid=0, kInvalid};
int g_nStatus=kValid;
long long Str2IntCore(const char* digit, bool minus){
long long num=0;
while(*digit!='\0'){
if(*digit>='0' && *digit<='9'){
int flag=minus?-1:1;
num=num*10+flag*(*digit-'0');
if((!minus && num>0x7FFFFFFF) || (minus && num<(signed int)0x80000000)){
num=0;
break;
}
digit++;
}else{
num=0;
break;
}
}
if(*digit=='\0'){
g_nStatus=kValid;
}
return num;
}
int Str2Int(const char* str){
g_nStatus=kValid;
long long num=0;
if(str!=NULL && *str!='\0'){
bool minus=false;
if(*str=='+') str++;
else if(*str=='-'){
str++;
minus=true;
}
if(*str!='\0') num=Str2IntCore(str, minus);
}
return (int)num;
}
int main(){
char *str="-1243";
printf("%d",Str2Int(str));
return 0;
}