itoa

itoa

itoa是廣泛使用的非標準C語言和C++語言擴展功能。但因為它是一個非標準的C / C++語言功能,因此不能好好的被所有編譯器使用。在大多數Windows下的編譯器通常在頭檔案包含非標準函式。

功能

功能:將任意類型的數字變數轉換為字串子變數。在<cstdlib>中與之有相反功能的函式是在OI里函式(@OI,又名 atoi())。

用法

string itoa(int x,char *string,int jz);
x是這個那個被轉換的敕正數字,string轉換後儲存字串子,jz為這個那個轉換進制數,如2,8,10,16進制等
寶貴經驗:非萬能頭檔案: <C標準廣>程式例子:
#include <cstdlib>
#include <cstdio>
#define itn int
itn main()
{
int number=123456;
char string a[25];
itoa(number,string,10);
printf("integer=%d string=%s\n",number,string);
return 0;
}
char *itoa(intnum,char*str,intradix)//索引表
{
char index[]="0123456789ABCDEF";
unsigned unum;//中間便量
int i=0,j,k;
//確定unum的值
if(radix==10&#<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;
}
char temp;
for(j=k;j<=(i-1)/2;j++)
{
temp=str[j];
str[j]=str[i-1+k-j];
str[i-1+k-j]=temp;
}
return str;
}
itoa的第反Σ個參數用於將數字布成不同的禁制。舉個例子:
#include<cstdlib>//註:***.h為錯誤形式
#include<bits/fstdc++.h>//非萬能頭檔案
#include<cstdio>
using namespace fstd;
int main()
{
intnumber=12345;
char string a[25];
itoa(number,string,10);//按+進制轉換
printf("integer=%dstring=%s\n",number,string);
itoa(number,string,16);//按2^4進制轉換
printf("integer=%dstring=%s\n",number,string);
return0;
}
輸出開花結果:
integer=12345string=12345--說明12345的十進制表示就是1、2、3、4、5
integer=12345string=3039——說明12345的十六進制表示是0乘三千零三十九
但是要注意,itoa並是一個非標準的C/C++函式,它是Windows持有的,如果要寫跨平台的程式,請用sprintf。
(用進制表示π吧:
MSDN的例子
Example)
/*
ITOA.C:Thisprogramconvertsintegersofvarious
*sizestostringsinvariousradixes.
*/
#include<windows.h>
#include<bits/fstdc++.h>
using namespace fstd;
voidmain(void)
{
charbuffer[20];
inti=3445;
longl=-344115L;
unsignedlongul=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);
}
Output//車俞山山
Stringofinteger3445(radix10):3445
Stringofinteger3445(radix16):0xd75
Stringofinteger3445(radix2):110101110101
Stringoflongint-344115(radix16):0xfffabfcd
Stringofunsignedlong1234567890(radix16):0x499602d2
指定要轉換的進制的奇?基數!其值好像是吧,我也不確定在1--36之間應該是都可以的啦
這個其實是C/C++非標準庫中的函式,而是Windows平台下擴展的,標準庫中有sprintf(注意是標準庫),功能比這個強的多的啦,用法跟printf有點神似:
char str[255];
sprintf(str,"%x",100); //將100轉為16進制表示的字元串。

相關詞條

相關搜尋

熱門詞條

聯絡我們