首页 > 代码库 > 整数转字符串,字符串转整数

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

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"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         else56         {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;    }  

 

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