zoukankan      html  css  js  c++  java
  • 整数转字符串,字符串转整数

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。

    题目比较简单,但是涉及到许多问题,例如非法输入,有正负号,是否为空字符串,且不是输入大数类型,可以用long long,8字节整型等等。主要:int a=a*10+(str[i]-'0')

    也可以直接使用c的库函数,atoi函数,如果不能转换则返回0.使用例子如下

    string a="-1232 pighehe";

    int num=atoi(a);

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 enum flag{
     5     valid=0,
     6     invalid=1
     7 };
     8 int judge=valid;
     9 
    10 
    11 long long paraInt(string str)
    12 {
    13     judge=valid;
    14     bool Fuflag=false;
    15     long long num=0;
    16     int i=0;
    17     if(str.size()==0) 
    18     {
    19         judge=invalid;
    20         return invalid;
    21     }
    22     if (str[0]=='-')
    23     {
    24         i=1;
    25         Fuflag=true;
    26         if(str.size()==1) 
    27         {
    28             judge=invalid;
    29             return invalid;
    30         }
    31     }
    32     
    33     for (i;i<str.size();++i)
    34     {
    35         int temp=str[i]-'0';
    36         if(temp>=0&&temp<=9)
    37             num=num*10+temp;
    38         else{
    39             judge=invalid;
    40             return invalid;
    41         }
    42     }
    43     if(Fuflag)
    44         a=-a;
    45     return num;
    46 }
    47 int main()
    48 {
    49     string str;
    50     while(cin>>str)
    51     {
    52         long long num=paraInt(str);
    53         if(!judge)
    54             cout<<num<<endl;
    55         else
    56         {
    57             cout<<"invalid input"<<endl;
    58         }
    59         str.clear();
    60     }
    61     return 0;
    62 }

    题目:输入一个整数,把该整数转换成字符串并输出。例如输入整数345,则输出整数"345"。

    类似的也有函数itoa,使用例子如下:

    int num=12345;
    char str[10];
    itoa(num,str,10); //将num转换为字符串保存到str中

    不使用itoa函数:将整数的每位转换为字符,然后再逆序保存。例如:

    //整形转成字符串函数实现  
    //题目不难,重点考察面试者对问题考虑的全面程度  
    #include <iostream>  
    using namespace std;  
    void itoa_mf(int num,char str[])  
    {  
        int sign = num;  
        int i = 0;  
        int j = 0;  
        char temp[100];  
        //如果是负数就去掉符号,将-1234转成1234  
        if(sign < 0)  
        {  
            num = -num;  
        }  
        //转成字符串,1234转成"4321"  
        do  
        {  
            temp[i] = num % 10 + '0';  
            num /= 10;  
            i++;  
        }while(num > 0);  
        //如果是负数的话,加个符号在末尾,如:"4321-"  
        if(sign < 0)  
        {  
            temp[i++] = '-';  
        }  
        temp[i] = '';  
        i--;  
        //将temp数组中逆序输入到str数组中  
        //将"4321-" ====> "-1234"  
        while(i >= 0)  
        {  
            str[j] = temp[i];  
            j++;  
            i--;  
        }  
        //字符串结束标识  
        str[j] = '';  
    }  
      
      
    //测试用例  
    void main()  
    {  
        int a = 0;  
        char s[100];  
        itoa_mf(a,s);  
        cout << s << endl;  
      
    }  
  • 相关阅读:
    分布式 基本理论 CAP
    iptables四表五链
    iptables四个表与五个链
    内存布局:栈,堆,BSS段(静态区),代码段,数据段
    linux系统pam配置
    Visio绘制时序图
    PHP中require和include路径问题总结
    ECSHOP购物流程收货人信息详细地址显示省市区
    我用的一些Node.js开发工具、开发包、框架等总结
    ECSHOP如何解决购物车中商品自动消失问题
  • 原文地址:https://www.cnblogs.com/fightformylife/p/4016218.html
Copyright © 2011-2022 走看看