关闭

C/C++面试题(1)——字符串转换成整数

标签: CC++面试题
833人阅读 评论(0) 收藏 举报
分类:

本题主要是将用户输入的数字字符串转换成对应的正整数;


最近正在准备面试想着平时学过的写过的经典的代码整理一下,为将要到来的秋招面试做好准备。

这是一个很简单的题目,主要考察编程者对于空指针,边界条件的判断,而要在面试的现场细心的注意到这些应该是很不容易的;

所以平时应该加强锻炼这方面的思维;


 #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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54607次
    • 积分:1003
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:27篇
    • 译文:0篇
    • 评论:7条
    最新评论