atoi算法
enum Status{KValid=0,KInvalid}; int g_nStatus=KValid; int StrToInt(const char *str) { g_nStatus=KInvalid; 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; } long StrToIntCore(const char*digit,bool minus) { 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; }