题目描述:
给定字符串,判断是否为整数(据说4行搞定?我猜肯定要用到正则表达式吧,不懂)
思路:
其实这道题网上有很多种版本,但是没有一个是完整的,我这里也没有实现完整的,但是最起码一个完整的需要考虑以下情况:
1、前导空格
2、符号
3、进制
4、非法字符
5、溢出
1 bool StrToInt( char *pc, long &value ) 2 { 3 //去掉前导空格 4 while( ( *pc==' ' || *pc=='\t' ) && *pc != '\0' ) pc++; 5 if( *pc == '\0' ) return false; 6 7 //处理正负号 8 int sign = 1; 9 if( *pc == '+' || *pc == '-' ) 10 { 11 if( *(pc+1) =='\0' ) return false; 12 if( *pc == '-' ) sign = -1; 13 pc++; 14 } 15 16 //处理数值 17 long tmp = 0; 18 while( *pc != '\0' ) 19 { 20 tmp *= 10; 21 //++优先级比*高 22 if( *pc < '0' && *pc > '9' ) return false; 23 tmp += ( *pc++ - '0' ); 24 } 25 value = tmp * sign; 26 return true; 27 }