jobbofhe的博客

为者常成,行者常至。(iofheshu@gmail.com)

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

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


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

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

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


 #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;  
 }  


阅读更多

扫码向博主提问

去开通我的Chat快问

jobbofhe

非学,无以致疑;非问,无以广识
版权声明:本文为博主原创文章,欢迎转载。转载请注明出处http://blog.csdn.net/jobbofhe https://blog.csdn.net/jobbofhe/article/details/52357804
文章标签: CC++面试题
上一篇C++中引用(&amp;)的用法详解
下一篇C++学习笔记-友元理论详解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭