itoa

itoa

itoa是廣泛使用的非標準C語言和C++語言擴展功能。但因為它是一個非標準的C / C++語言功能,因此不能好好的被所有編譯器使用。在大多數Windows下的編譯器通常在<cstdlib>頭檔案包含非標準函式。itoa()函式把整數轉換成字元串,並返回指向轉換後的字元串的指針。

基本介紹

  • 中文名:itoa函式
  • 外文名:itoa
  • 別稱:整型轉換字元數組函式
  • 表達式:itoa(int,char*,int)
  • 套用學科:計算機科學
  • 適用領域範圍:C/C++
  • 適用領域範圍:計算機科學、OI
  • 頭檔案:<stdlib.h>(C++版本:<cstdlib>)
  • 功能:把int轉換為char*字元數組
功能,用法,相關介紹-atoi函式,實現itoa函式的原始碼,實例,

功能

功能:將整型的數字變數轉換為字元數組變數。在<cstdlib>中與之有相反功能的函式atoi。

用法

char *itoa (int value, char *str, int base );
返回值:返回指向str的指針,無錯誤返回。
int value 被轉換的整數,char *string 轉換後儲存的字元數組,int radix 轉換進制數,如2,8,10,16 進制等,大小應在2-36之間。
程式例子如下:
#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函式

atoi (表示 ascii to integer)是把字元串轉換成整型數的一個函式,套用在電腦程式和辦公軟體中。int atoi(const char *nptr) 函式會掃描參數 nptr字元串,會跳過前面的空白字元(例如空格,tab縮進)等。如果 nptr不能轉換成 int 或者 nptr為空字元串,那么將返回 0。特別注意,該函式要求被轉換的字元串是按十進制數理解的。atoi輸入的字元串對應數字存在大小限制(與int類型大小有關),若其過大可能報錯-1。

實現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;}

實例

itoa的第三個參數用於將數字轉換成不同的進制。例如:
#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;}
Outout:
Stringofinteger3445(radix10):3445Stringofinteger3445(radix16):0xd75Stringofinteger3445(radix2):110101110101Stringoflongint-344115(radix16):0xfffabfcdStringofunsignedlong1234567890(radix16):0x499602d2
指定要轉換的進制的基數,其值應在2-36之間。
這個其實是C/C++非標準庫中的函式,而是Windows平台下擴展的,標準庫中有sprintf(注意是標準庫),功能比這個強的多的啦,用法跟printf有點神似:
char str[255];sprintf(str,"%x",100); //將100轉為16進制表示的字元串。

相關詞條

熱門詞條

聯絡我們