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

来源:互联网 发布:vi编程啥意思 编辑:程序博客网 时间:2024/06/14 15:44

题目

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

例如输入字符串"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. }  
0 0
原创粉丝点击