字符串转换为整数

来源:互联网 发布:网络语鸡汤是什么意思 编辑:程序博客网 时间:2024/05/21 17:31
bool isspace(char c){ if(c==' '||c=='\t' ||c=='\n'||c=='\v'||c=='\f'||c=='\r')  return true; return false;}bool StrToInt(char *str,int &num){ if(!str)   return false;  while(isspace(*str))   //跳过前面空格,比如“     123”,则输出123  ++str;    bool minusSign=false;  //正负号标志位 if (*str=='-')   //判断跳过空格后是否有正负号 {  minusSign=true;  ++str; } else if(*str=='+') {  ++str; } if(!(*str>='0' && *str<='9'))   //判断下一个字符是否是数字,如果不是,返回false,比如“   +   123”则返回fasle                return false;           //也就是如果有+-号,则+-号后面必须是数字,否则是无效输入    while(*str!='\0') //提取字符串中数字,也就是“   123abc”这种情况算合法输入,输出123 {  if (*str>='0' && *str<='9')  {   num=num*10+(*str-'0');  }  else  {   break;  }  str++; } if(minusSign) //如果是负数,也可以num=(-1)*num;只不过减法效率高  num=0-num; return true;}void main(){ char* str="   -1235a5bc555"; //测试用例"   -1235a5bc555","   -","","    ","123abc", "   123   456" int num=0; if(StrToInt(str,num))  cout<<num<<endl; else  cout<<"Invalid Input!"<<endl;}


 

注:本程序将"     -123   456"、“  123abc”这种情况当做了合法输入,只提取第一部分数字。

原创粉丝点击