把对应数字字符串转换成整数

题目

输入一个表示整数的字符串,把该字符串转换成整数并输出。

例如输入字符串"345",则输出整数345。

分析

每扫描到一个字符,我们把在之前计算得到的值乘以10再加上当前字符表示的数字值,这个思路用循环不难实现。其实就是实现函数atoi()

  1. /*Title: 20.把对应数字字符串转换成整数 
  2. Author:  gocode 
  3. Date:    2012-10-17*/  
  4.    
  5. #include <tchar.h>  
  6. #include <iostream>  
  7. #include <limits>  
  8.    
  9. int ConvertNumStringToInteger(const TCHAR *ptszStr)  
  10. {  
  11.     if (NULL == ptszStr) return 0;  
  12.    
  13.     long long llValue = 0;  
  14.     int i32CharVal = 0;  
  15.     bool bMinus = false;  
  16.    
  17.     int i32Len = _tcslen(ptszStr);  
  18.     for (int i32I = 0; i32I < i32Len; i32I++)  
  19.     {  
  20.         // 判断正负  
  21.         if (0 == i32I && ptszStr[i32I] == _T('+'))  
  22.             bMinus = false;  
  23.         else if (0 == i32I && ptszStr[i32I] == _T('-'))  
  24.             bMinus = true;  
  25.         else if (ptszStr[i32I] >= _T('0') && ptszStr[i32I] <= _T('9'))  
  26.         {  
  27.             i32CharVal = ptszStr[i32I] - _T('0');  
  28.             llValue = llValue * 10 + i32CharVal;  
  29.    
  30.             if(llValue > std::numeric_limits<int>::max()) // 溢出判断  
  31.             {  
  32.                 llValue = 0;  
  33.                 break;  
  34.             }  
  35.         }  
  36.         else  
  37.             break;   
  38.     }  
  39.    
  40.     if (bMinus)  
  41.         llValue = -llValue;  
  42.    
  43.     return static_cast<int>(llValue);  
  44. }  
  45.    
  46. int _tmain(int argc, _TCHAR* argv[])  
  47. {  
  48.     _tprintf(_T("The result is %d.\n"), ConvertNumStringToInteger(_T("-23s456")));  
  49.     return 0;  
  50. }  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值