我们在使用c++时,通常会把一些我们想要的信息整合到一个string实例里,然后转到cout中输出。一开始用的方法可能是通过先构造一个空的string对象,然后通过”+=”来一个个构造我们想要的string对象。
这里存在一个麻烦,就是当数据类型繁杂(int,float,double转string),数据数量偏多,数据在信息中比较分散时,一步步的构造会十分麻烦。还要用流来转数据为string。(特别是当数据还要保持精度时,还要用fixed,那酸爽。。。。)降低了编程的效率。
这里介绍最近学会的sprintf()函数,可以很好的解决这个问题。
这个函数是在<cstdio>这个头文件中。 函数原型是:
int snprintf ( char * s, size_t n, const char * format, ... );
它可以把你想要的信息统统以c风格的字符串形式存入s中,然后,调用string类的构造函数,即可以构造出一个你想要的string。
参数列表解释: 1、s是存放c风格字符串的数组第一个元素的指针 2、n是你想要使用的这个数组的最大的长度。 3、format是格式,其实和printf()相类比,就可以知道是类似”%s”这种,这样的话,把你想要的信息都在”“里面实现,而且控制精度也十分方便,就像printf()的那样。 4、…表示你的变量,按照format中的从左到右的顺序排列完整即可。 5、返回值是成功改变的字符的数量,如果出现错误的话,返回负数
举例说明: 你想要为银行的vip客户创建一个名片。只需
using namespace std;
string VIPAccount::profile() const {
double limit = 1000;
char a[300]; // 建一个足够大的数组就好
memset(a, 0, sizeof(a));
snprintf(a,sizeof(a),
"ID:%d\nBALANCE:%.6lf\nVALID:Y\nTYPE:VIP\nLOAN:%.6lf,LIMIT:%.6lf\n",
_id, _balance, _loan, limit);
string temp(a);
return temp;
}
(当然此处省略了VIPAccount这个类的声明。。)
的确是很方便,比一个个的去构造要方便多了。。。
当然,我们在c文件中也可以用这个来方便地构造我们想要的c风格字符串。
做此记录,以免以后忘记如何使用:)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有