把字符串转换成整数

来源:互联网 发布:进口美工刀架9mm品牌 编辑:程序博客网 时间:2024/05/07 11:54

需要考虑以下几点:

1 指针是否为空

2 字符串是否为空字符串

3 字符串是否有正负号

4 字符串转换的数字是否会整数溢出

5 设置全局变量,验证返回0是因为字符串为“0”还是因为错误输入


enum status {kvalid = 0, kInvalid};//全局变量,用于验证返回0是因为字符串为"0"还是错误输入int flag = kvalid;int StrToInt(const char *str){flag = 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;}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))//正整数最大值是0X7FFFFFFF,负整数最小值是0X80000000{num = 0;break;}}else{num = 0;break;}}if(*digit == '\0')flag = kvalid;return num;}


原创粉丝点击