首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C++:用sprintf()快速把想要的东西转成string类

C++:用sprintf()快速把想要的东西转成string类

作者头像
用户7886150
修改2021-02-14 15:07:50
修改2021-02-14 15:07:50
2.2K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ snprintf()

我们在使用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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档