首页 > 代码库 > 字符串转整数问题
字符串转整数问题
要点:要考虑到各种非法参数。
实现:
/********************************** 字符串转整数 by Rowandjj 2014/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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。