先看下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类似。

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

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

 

 1 //n是要被转换的十进制数,bit是要被转换的进制数 
 2 #include <iostream> 
 3 #include <string> 
 4 using namespace std; 
 5 
 6 char * Ten_to_other(int num,char* str, int radix) 
 7 {
 8     const char a[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 9     char *ptr=str;
10     bool negtive = false;
11     if(num==0)
12     {
13         *ptr++=0;
14         *ptr='\0';
15         return NULL;//直接就退出,不走后面的情况了,不跟后面共用一个return语句。
16     }
17     if(num<0)
18     {
19         num *= -1;
20         *ptr++ ='-';
21         negtive = true;
22     }
23     while(num) //不能处理num=0的情况
24     {
25         *ptr++=a[num%radix];
26         num /= radix; 
27     } 
28     *ptr='\0';//此时ptr已经指向字符串结尾,而str仍旧指向字符串开始。
29     ptr--;//让ptr指向字符串内容!!
30     char *start=(negtive)? str+1:str;//注意此处不能写str++,否则,str不指向保存值的首地址了
31     while(start<ptr)
32     {
33         char tmp=*ptr;
34         *ptr=*start;
35         *start=tmp;
36         ptr--;
37         start++;
38         /*char tmp=*ptr--;//这样写ptr,str都加了那么多遍,肯定错了啊!!!
39         *ptr--=*str++;
40         *str++=tmp;*/
41     }
42     /*int len=strlen(str); 
43     int i = (negtive)? 1:0;
44     for(i; i<len/2; ++i) //当为负数时候,str字符串最后的字符不能用len-1-i了,因为此时i=1而不是0
45     {
46         char tmp = str[i];
47         str[i]=str[len-1-i];
48         str[len-1-i]=tmp; 
49     } */
50     return NULL; 
51 } 
52 int main()
53 {
54     char a[12]={0}; 
55     Ten_to_other(-82,a,6); 
56     cout<<a<<endl; 
57     system("pause"); 
58     return 0; 
59 } 

 

 

 

posted on 2012-06-21 10:33  applebunny  阅读(3686)  评论(0编辑  收藏  举报