字符串转整数问题

来源:互联网 发布:老鼠仓软件 编辑:程序博客网 时间:2024/05/23 00:34
要点:要考虑到各种非法参数。

实现:

/**********************************字符串转整数by Rowandjj2014/7/15***********************************/#include<iostream>#include<stdlib.h>//不加这个头文件在九度oj上会编译错误using namespace std;int state = 0;//0代表串非法,1代表正常long Str2Int(const char *str){long num = 0;if(str == NULL)//输入null{state = 0;return 0;}const char* digit = str;int minius = 0;//0代表正数,1代表负数while(*digit == ' ')//跳过空格{digit++;}if(*digit == '+'){digit++;}else if(*digit == '-'){minius = 1;digit++;}if(*digit == '\0')//只输入+或者-{state = 0;return 0;}while(*digit != '\0'){if(*digit > '9' || *digit < '0')//非法字符{state = 0;return 0;}state = 1;num = num*10 + (*digit - '0');//核心代码digit++;}//越界if(*digit>0x7fffffff || *digit<(signed int)0x80000000){state = 0;return 0;}  return minius?(0-num) : num;}int main(){long digit;char str[1000];char *p = str;while(cin>>p){digit = Str2Int(p);if(state==0){cout<<"My God\n";}else//state == 1{cout<<digit<<endl;} }return 0;}


1 0
原创粉丝点击