1、数值转换为字符串
(1)整数转换为字符串
-
itoa():将整型值转换为字符串
char *itoa (int value, char *str, int base);
int value为被转换的整数,char *str为转换后储存的字符数组,int base为转换进制数,如2,8,10,16 进制等,大小应在2-36之间。返回指向str的指针
但是,itoa()是一个非标准的C/C++语言函数,不能被所有编译器使用。大多数Windows编译器中,C语言包含在头文件<stdlib.h>,C++包含在头文件<cstdlib>。
-
sprintf():把格式化的数据写入某个字符串中
int sprintf(char *string, char *format [,argument,...]);
返回以format为格式,argument为内容的结果被写入string字符串的字节数,结束字符‘\0’不计入内。
sprintf()是一个字符串格式化命令,包含在头文件<stdio.h>中。如果要将整数转换为字符串,则可以写成:sprintf(str, " %d" , num);
(2)浮点数转换为字符串
-
ecvt():将双精度浮点型值转换为字符串,转换结果中不包含小数点或正负号。
char *ecvt(double value, int ndig, int *dec, int *sign);
将浮点数value以存储的有效数字位数ndig转换成字符串(超过位数的四舍五入,不超过的补0),其中不包括小数点和正负号。dec:返回小数点的位置,sign:返回符号,0表示正数,不为0表示负数。例如:char *s = ecvt(var, 5, &dec, &sign);
-
fcvt():把一个浮点数转换为字符串
用法同ecvt(),但fcvt()中的ndig是小数点后面的位数。
-
gcvt():将双精度浮点型值转换为字符串,转换结果中包含小数点或正负号。
char *gcvt(double number, size_t ndigits, char *buf);
将浮点数number转换成字符串,参数ndigits 表示显示的位数。将转换后的字符串存入buf 指针所指的空间。
2、字符串转换为数值
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。
(1)字符串转换为整数
atoi()、atol()、strtol()、stroul()函数支持把字符串转换为不同类型的整型值,包含在头文件<stdlib.h>中。基本用法为:
int atoi(const char *str)
把参数 str 所指向的字符串转换为一个相应类型整数。
-
atoi():将字符串转换成整型数
-
atol():将字符串转换成长整型数
-
strtol():将字符串转换成长整型数
-
strtoul():将字符串转换成无符号长整型数
(2)字符串转换为浮点数
-
atof():将字符串转换成浮点型数
double atof(const char *str)
把参数 str 所指向的字符串转换为一个双精度浮点数。
-
strtod():将字符串转换成浮点数
double strtod(const char *str, char **endptr)
把参数 str 所指向的字符串转换为一个双精度浮点数。endptr 是对类型为 char* 的对象的引用,如果该参数位置不为空,则指向 str 中数值后的下一个字符。
参考文章: