整数转字符串,字符串转整数

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"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] = '\0';  
    i--;  
    //将temp数组中逆序输入到str数组中  
    //将"4321-" ====> "-1234"  
    while(i >= 0)  
    {  
        str[j] = temp[i];  
        j++;  
        i--;  
    }  
    //字符串结束标识  
    str[j] = '\0';  
}  
  
  
//测试用例  
void main()  
{  
    int a = 0;  
    char s[100];  
    itoa_mf(a,s);  
    cout << s << endl;  
  
}  

 

posted @ 2014-10-10 16:26  雄哼哼  阅读(2501)  评论(0编辑  收藏  举报