函数: int atoi(const char *str);
函数: long atol(const char *str);
1. 扫描 str 字符串, 跳过str前面的空格(注意只能是跳过Tab 空格 换行 回车键;若为其他就会停止 转换);
2. 从第一个数字字符(或是-、+)开始转换,终止于第一个非字符.
函数:double atof(const char *str);
str 以 E 或 e 除外的其他非数字字符结尾, 其他同atoi(char *str);
函数:char _itoa(int Val, char* str, int radix);
注意: itoa()或者_itoa()都不是标准库函数,并不是所有的编译器都能编译通过.
Val: 要转化的数值;
str: 转化后,存放的字符数组;
radix: 转化的进制 2~36;
附加:
sprintf(char *str, "%d",...); 比itoa()功能更强大.且为标准库<stdio.h>所有.
sprintf(char *str, "%o",...);
sprintf(char *str, "%x",...);
给上程序测试案例:
- #include<cstdlib>
- #include<cstdio>
- #include<cstring>
- int main()
- {
- /*以下是atoi(), atof(), atol()的调用*/
- char *a = new char[20];
- strcpy(a,"0102"); //a = 0102
- a[0] = 13; //或者 a[0] = 10; a[0] = 32;
- int i = atoi(a);
- //cout<<"Test_atoi: i = "<<i<<endl;
- printf("Test_atoi:i = %d\n",i);//i = 102; 忽略了换行
- a = " 12.01E3";
- double f = atof(a);
- //cout<<"Test_atof: f = "<<f<<endl; //f=12010
- printf("Test_atof:f = %.2lf\n",f);
- /*****************/
- /*itoa(int,char*,int radix) 在stdlib.h中声明,但不是标准库函数*/
- int Val = 1234567; /*****************/
- char *p = new char[20];
- _itoa(Val,p,10); // itoa(Val,p,10);
- //cout<<"Test_itoa: p = "<<p<<endl;
- char *tmp1 = new char[50];
- strcpy(tmp1,"Test_itoa: p = ");
- strcat(tmp1,p);
- puts(tmp1);
- /*用sprintf();代替itoa()的功能; sprintf()在stdio.h中声明*/
- char *s = new char[50];
- int val = 2345678;
- sprintf(s,"%d",val);
- //cout<<"Test_Sprintf: s = "<<s<<endl;
- char *tmp2 = new char[50];
- strcpy(tmp2,"Test_Sprintf: s = ");
- strcat(tmp2,s);
- puts(tmp2);
- system("pause");
- return 0;
- }