标准C/C++字符串和数字的转化

本文介绍C语言中数字与字符串互相转换的方法,包括sprintf, gcvt, ecvt, fcvt等函数的使用,以及C++中stringstream类和C++11新增的string类对象与数字之间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言的两个头文件:

1、<stdio.h>中

sprintf()  和 sscanf() .  //sscanf 和 scanf 的 %s格式时,会以空白字符为分界。

数字转字符串:

char   *   gcvt(double   value, size_t   ndigits,char   *buf)

ndigits表示字位的个数(不包括符号和小数点),buf表示传入的缓存,最终的转换的结果在 buf 中存储。

double source = -300.123456789;
int ndigits = 6
char buf[25] = {0};    转换之后,打印buf   -300.1235

如果超出buffer的长度,会越界使用内存。


char   *ecvt(double   value, size_t   ndigits, int   *dec, int   *sign)

char   *fcvt(double   value,size_t   ndigits, int   *dec, int   *sign)

ecvt和fcvt的参数边为四个,函数内部已分配缓存区;输出字符串中不包含符号和小数点,小数点的位置由 *dec 决定,表示整数位的位数,符号由 *sign 决定,0 表示正,1表示负。区别在于:ndigits 对于fcvt 表示保留的小数数字的位数,而对于 ecvt 表示总的数字结果的位数。

上边的结果,fcvt得到的结果为 3001234568  *dec:3  *sign:1

                      ecvt得到的结果为 3001235   *dec:3   *sign:1

2、<stdlib.h>中   ato xx  和  strto xx 系列:

strtol()  和 strtof() .

C++中使用流处理

3、<ssteam>中

类stringstream, 注意 .clear() 和 .str() 函数的清理,使用防止转化错误。  //将基本类型都抽象为流,以一种基本类型存入,另外一种取出。

4、C++11中的string类对象与数字的转化

<string>

stoi()  ,   stof(),  stod()    和  to_string.

详细用法查询这里点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值