字符串转换成整数

 #include<iostream>  
 #include<string>  
 #include<limits>  
 using namespace std;  
   
 Bool Input = FALSE;  
   
 /************************************************  
 /* 将数字字符串转换成对应的整数  
 /************************************************/  
 int strToInt(const char* str)  
 {  
     Input = FALSE;  
     Bool IsMinus = FALSE;  
     const char* digit = str;  
     long result = 0;  
     
     if(NULL == str)
     {
         std::cerr<<"str is NULL"<<std::endl;
     }
 
     else if(NULL != str)  
     {  
         //判断首字符是不是正负号  
         if(*digit == '+')  
         {  
             digit++;  
         }  
         else if(*digit == '-')  
         {  
             IsMinus = TRUE;  
             digit++;  
         }  
   
         //判断剩下的字符  
         while(*digit != '\0')  
         {  
             //字符处于0-9之间的有效字符  
             if(*digit >= '0' && *digit <= '9')  
             {  
                 result = result * 10 + (*digit - '0');  
   
                 //溢出,即大于最大的正数,小于最小的负数  
                 if((result > numeric_limits<int>::max() && !IsMinus) || (-result < numeric_limits<int>::min() && IsMinus))  
                 {  
                     result = 0;  
                     break;  
                 }  
   
                 digit++;  
             }  
               
             //其他在0-9之外的非法字符  
             else  
             {  
                 result = 0;  
                 break;  
             }  
   
         }  
   
         //遍历到最后一个字符,说明是有效输入;检查正负号  
         if(*digit == '\0')  
         {  
             Input = TRUE;  
             if(IsMinus)  
             {  
                 result = 0 - result;  
             }  
         }  
     }  
   
     return static_cast<int>(result);  
 }  
   
 int main()  
 {  
     cout<<"请输入你的字符串"<<endl;  
     char *mystring = new char[1024];  
     cin>>mystring;  
   
     cout<<"您所输入的字符串转换成整数为:"<<endl;  
     cout<<strToInt(mystring)<<endl;  
     cout<<"您的输入转换状态是:"<<endl;  
     cout<<Input<<endl;  
   
     delete[] mystring;  
       
     return 0;  
 }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值