字符串轉換成整數

int parseInt( const char* str){
   static const int MAX_INT = (int)( (unsigned)~0>>1);
   static const int MIN_INT = -(int)( (unsigned)~0>>1)-1;

   unsigned int n = 0;

   if( *str==0x00) return 0;      //isNULL 
   while( isspace(*str)) ++str;   //isSpace

   int flag = 1;
   if( *str=='+' || *str=='-') {  //sign bit
       if( *str=='-') flag=-1;
       ++str;
   }

   while( isdigit(*str)){         
     int cur = *str-'0';
     if( flag>0 && (n>MAX_INT/10 || (n==MAX_INT/10 && c>MAX_INT%10)) ) {
        n=MAX_INT;    break;
     }

     else if( flag<0 && (n>(unsigned)MIN_INT/10 || 
         (n==(unsigned)MIN_INT/10 && c>(unsigned)MAX_INT%10)) ) {
         n=MIN_INT;  break;
     }

    n=n*10+c;
    ++str;
  }

 return flag>0?n:-n;
}
相關文章
相關標籤/搜索