itoa是廣泛使用的非標準C語言和C++語言擴展功能。但因為它是一個非標準的C / C++語言功能,因此不能好好的被所有編譯器使用。在大多數Windows下的編譯器通常在<cstdlib>頭檔案包含非標準函式。itoa()函式把整數轉換成字元串,並返回指向轉換後的字元串的指針。
基本介紹
- 中文名:itoa函式
- 外文名:itoa
- 別稱:整型轉換字元數組函式
- 表達式:itoa(int,char*,int)
- 套用學科:計算機科學
- 適用領域範圍:C/C++
- 適用領域範圍:計算機科學、OI
- 頭檔案:<stdlib.h>(C++版本:<cstdlib>)
- 功能:把int轉換為char*字元數組
功能
用法
char *itoa (int value, char *str, int base );
#include <stdlib.h>//cstdlib和stdlib.h都可以#include <stdio.h>//cstdio和stdio.h都可以//如果用的是cstdio和cstdlib,要加上 using namespace std;int main(void){ int number = 123456; char string[25]; itoa(number, string,1 0); printf("integer=%d string=%s\n", number, string); return 0;}
相關介紹-atoi函式
實現itoa函式的原始碼
char* itoa(int num,char* str,int radix){/*索引表*/ char index[]="0123456789ABCDEF"; unsigned unum;/*中間變數*/ int i=0,j,k; /*確定unum的值*/ if(radix==10&&num<0)/*十進制負數*/ { unum=(unsigned)-num; str[i++]='-'; } else unum=(unsigned)num;/*其他情況*/ /*轉換*/ do{ str[i++]=index[unum%(unsigned)radix]; unum/=radix; }while(unum); str[i]='\0'; /*逆序*/ if(str[0]=='-') k=1;/*十進制負數*/ else k=0; for(j=k;j<=(i-1)/2;j++) { char temp; temp=str[j]; str[j]=str[i-1+k-j]; str[i-1+k-j]=temp; } return str;}
實例
#include<cstdlib>#include<cstdio>int main(void){ int number=12345; char string[25]; itoa(number,string,10);//按十進制轉換 printf("integer=%dstring=%s\n",number,string); itoa(number,string,16);//按16進制轉換 printf("integer=%dstring=%s\n",number,string); return 0;}
integer=12345string=12345 ——說明12345的十進制表示就是12345
integer=12345string=3039 ——說明12345的十六進制表示是0x3039
但是要注意,itoa並是一個非標準的C/C++函式,它是Windows持有的,如果要寫跨平台的程式,請用sprintf。
MSDN的例子
/*ITOA.C:Thisprogramconvertsintegersofvarious*sizestostringsinvariousradixes.*/#include<cstdlib>#include<cstdio>int main(void){ char buffer[20]; int i=3445; long l=-344115L; unsigned long ul=1234567890UL; _itoa(i,buffer,10); printf("Stringofinteger%d(radix10):%s\n",i,buffer); _itoa(i,buffer,16); printf("Stringofinteger%d(radix16):0x%s\n",i,buffer); _itoa(i,buffer,2); printf("Stringofinteger%d(radix2):%s\n",i,buffer); _ltoa(l,buffer,16); printf("Stringoflongint%ld(radix16):0x%s\n",l,buffer); _ultoa(ul,buffer,16); printf("Stringofunsignedlong%lu(radix16):0x%s\n",ul,buffer); return 0;}
Stringofinteger3445(radix10):3445Stringofinteger3445(radix16):0xd75Stringofinteger3445(radix2):110101110101Stringoflongint-344115(radix16):0xfffabfcdStringofunsignedlong1234567890(radix16):0x499602d2
char str[255];sprintf(str,"%x",100); //將100轉為16進制表示的字元串。