• 将字符串转成整数以及整数转成字符串


    1.将字符串转换成整数

               没什么难点,就是考虑的情况比较多。

    #include<iostream>
    #include<cctype>
    #include<exception>
    #include<climits>
    #include<cstdio>
    using namespace std;
    
    long Str2Num(const char *str)
    {
         if(!str)throw new std::exception("NULL String");
         bool isNegetive = false;
         int radix = 10;
         unsigned long ret = 0;
         if(*str == '-'){
    	     isNegetive = true;
    	     ++str;
         }else if(*str == '+')++str;
         if(*str == '0'&&(str+1)&&*(str+1)!='x'&&*(str+1)!='0'){
    	     radix = 8;
    	     ++str;
         }
         else if(*str == '0'&& tolower(*(str+1))=='x'){
    	     radix = 16;
    	     ++str;++str;
         }
         for(;*str!='';++str){
    	     int ch = *str;
    	     if((ch - '0') <radix){
    	          ret = ret*radix + ch - '0';
             }
             else if(radix == 16 && ('a'<=tolower(ch)&&tolower(ch)<='f')){
    	          ret = ret*radix + tolower(ch) - 'a' + 10;
             }
             else
    	          throw new exception("Invalid num");
             if(ret>LONG_MAX)throw new exception("overfolw");
         }
         return isNegetive?(-ret):ret;
    }

    2.将整数转换成字符串(借用别人的,感觉还是有些情况没考虑到)

    char * Num2Str(int Number)
    
    {
    
       char ch,*str,*right,*left;
    
       unsigned int Value;
    
       str = (char *)malloc(12*sizeof(char));
    
       left = right = str;
    
       //如果是负数,则应加上负号,left、right向后走。
    
       if(Number < 0)
    
       {
    
          Value = -Number;
    
          *str = '-';
    
          left++,right++;
    
       }
    
       else
    
          Value = (unsigned)Number;
    
       //把数字转换成字符串(倒置的)
    
       while(Value)
    
       {
    
          *right = (Value%10)+0x30;
    
          Value = Value/10;
    
          right++;
    
       }
    
       *right-- = '';
    
       //把倒置的字符串正放过来
    
       while(right > left)
    
       {
    
          ch = *left;
    
           *left++ = *right;
    
           *right-- = ch;
    
       }
    
       return str;
    
    }


  • 相关阅读:
    nginx实战
    apache定制错误页面
    openstack虚拟机获取不到ip
    ansible-galera集群部署(13)
    kubernetes监控(12)
    kubernets部署sock-shop微服务电商平台(11)
    用ConfigMap管理配置(10)
    k8s管理机密信息(9)
    shell编程(2)
    shell练习题集合
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3172390.html
Copyright © 2020-2023  润新知