//模擬atoi函數(劍指offer學習筆記)。
enum Status{kValid=0,kInvalid};
int g_nStatus=kValid;
long long StrToIntCore(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 StrToInt(const char* str){
g_nStatus=kInvalid;
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=StrToIntCore(str,minus);
}
return (int)num;
}
void main(){
char* str="23412341";
cout<<StrToInt(str)<<endl;
}
字符串和整數相互轉化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.