先看下itoa()的函数说明吧:

功 能:把一整数转换为字符串  

用 法:char *itoa(int value, char *string, int radix);   

详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.   

参数:  value: 待转化的整数。

           radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

          * string: 保存转换后得到的字符串。  

返回值:  char * : 指向生成的字符串, 同*string。  

备注:该函数的头文件是"stdlib.h" (包含在iostream里面)
 

记住一点:itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似。

 

 虽然可能itoa无法使用,但是我们可以编写自己的itoa()函数,以下是实现源代码(来源网络):

char*my_itoa(int num,char*str,int radix) { const char table[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; char*ptr=str ; bool negative=false ; if(num==0) { //num=0 *ptr++='0' ; *ptr='/0' ; // don`t forget the end of the string is '/0'!!!!!!!!! return str ; } if(num<0) { //if num is negative ,the add '-'and change num to positive *ptr++='-' ; num*=-1 ; negative=true ; } while(num) { *ptr++=table[num%radix]; num/=radix ; } *ptr='/0' ; //if num is negative ,the add '-'and change num to positive // in the below, we have to converse the string char*start=(negative?str+1:str); //now start points the head of the string ptr--; //now prt points the end of the string while(start<ptr) { char temp=*start ; *start=*ptr ; *ptr=temp ; start++; ptr--; } return str ; }

 

程序的测试如下:

#include <iostream> using namespace std; int main() { int a=15; char str[100]; my_itoa(a,str,15); cout<<str<<endl; return 0; }

 

对于已经转换到指定进制的数,此时是字符串,我们可以再转换为整型(2~10进制才可以),比如:

int main() { int a=15; char str[100]; int n=atoi(my_itoa(a,str,2)); cout<<n<<endl; return 0; }

备注:atoi()是标准库里面的函数,在C/C++语言参考函数里面有,而itoa()却没有,对此我们最好自己实现itoa()函数。