Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C++:用sprintf()快速把想要的东西转成string类

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

作者头像
用户7886150
修改于 2021-02-14 07:07:50
修改于 2021-02-14 07:07:50
1.9K0
举报
文章被收录于专栏: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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++】模拟实现string类
https://blog.csdn.net/weixin_72357342/article/details/136852268?spm=1001.2014.3001.5502 而在本次项目中我们的目标是模拟实现一个string类: 该string包含四个成员变量,分别是:
修修修也
2024/05/30
2550
【C++】模拟实现string类
实现String类
实现一个字符串类 字符串类原型: class String { private: char * str; // pointer to string int len; // length of string static int num_strings; // String类对象数量 static const int CINLIM = 80; // cin input limit 输入限制 }; 需要实现的功能: 实
DeROy
2020/05/11
5330
C/C++之string类小结
C++提供了三种方法可以将C++字符串转化为C字符串,分别是data(),c_str(),copy()成员函数来实现。
用户7886150
2021/02/15
4680
String类(1)
那是因为String这个类有重写toString方法,在println中经过一系列复杂的操作导致其打印出的其实是字符串对象内部的value成员数组中的每个数组成员。如上打印出asdjj。
E绵绵
2024/04/17
970
String类(1)
【C++】string类
string类的文档介绍 https://cplusplus.com/reference/string/string/?kw=string
啊QQQQQ
2024/11/19
690
【C++】string类
【C++】深入探索string类的实现(上)
TANGLONG
2025/03/19
460
【C++】深入探索string类的实现(上)
C语言函数大全--f开头的函数(上)
注意: 如果文件中的一行,不足 n-1 个字符,则读完该行就直接结束。如若该行(包括最后一个换行符)的字符数超过 n-1,则 fgets 只返回一个不完整的行,但是,缓冲区总是以 NULL 字符结尾,对 fgets 的下一次调用会继续读该行。函数成功将返回 stream,失败或读到文件结尾返回 NULL。因此不能直接通过 fgets 的返回值来判断函数是否是出错而终止的,应该借助 feof 函数或者 ferror 函数来判断。
huazie
2025/01/17
1890
C语言函数大全--f开头的函数(上)
【C++】string类(上)
(1)字符串是表示字符序列的类,string是表示字符串的字符串类 (2)标准的字符串提供了对此类对象的支持,其接口类似于标准字符容器的接口与常规容器的接口基本相同,但添加了专门用于操作单字节字符字符串的设计特性,也就是专门用来操作string的常规操作 (3)string类是使用char作为它的字符类型 (4)string类是basic_string模版类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数
s-little-monster
2024/08/09
1070
【C++】string类(上)
【C++】string类的模拟实现
1. 库里面的构造函数实现了多个版本,我们这里就实现最常用的参数为const char *的版本,为了同时支持无参的默认构造,这里就不在多写一个无参的默认构造,而是用全缺省的const char *参数来替代无参和const char *参数的两个构造函数版本。
举杯邀明月
2023/04/12
6500
【C++】string类的模拟实现
C++のString类
今天的文章没有按时发布(原定早上7:00),跟大家说个抱歉,由于昨天晚上下班回到家就开始忙着建我们的网站(后续很多学习资源将会同步上去),一忙起来就忽略了时间,然后写到晚上1点多没写完,本以为早上6点起来继续写能写完,但是“低风险创业”这个话题内容比较多所以没来得及发布,还请各位海涵,后续我会分配好任务时间,避免再出现这样的失误!
leoay
2019/12/27
6210
C++【string类,模拟实现string类】
当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际 只对第一个类型进行推导,然后用推导出来的类型定义其他变量。
逆向-落叶
2024/11/10
1390
C++【string类,模拟实现string类】
【C++】string类的模拟实现
​ 该函数的作用:在 pos 位置上插入 字符c 或者 字符串str ,并返回该字符的位置!
利刃大大
2025/02/07
590
C语言 sprintf函数使用详解
srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~
全栈程序员站长
2022/06/28
2.3K0
C语言 sprintf函数使用详解
(超级清晰版)string类--C++
string类的文档(非官方) 在使用string类时,必须包含#include头文件以及using namespace std;
小志biubiu
2025/02/27
570
(超级清晰版)string类--C++
【C++修行之道】string类的使用
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数, 但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可 能还会越界访问。
走在努力路上的自己
2024/07/13
770
【C++修行之道】string类的使用
【C++】string类——模拟实现
通过模拟实现string类的主要接口可以使我们对string类的理解更加透彻,深入理解内存管理,可以更好地理解字符串在内存中的存储方式,以及如何进行内存分配和释放,从而避免常见的内存泄漏和溢出问题,加深对面向对象编程理念的理解,比如封装、继承和多态。
_小羊_
2024/10/16
1220
C++从入门到精通——string类
string 类是编程语言中用于表示和操作字符串的基本数据类型或类。它提供了一系列方法和操作,允许开发者对字符串进行创建、修改、查找、比较、转换等。string 类通常具有不可变性,意味着一旦创建了字符串对象,其内容就不能被修改,但可以创建新的字符串对象来表示修改后的内容。这种特性有助于在多线程环境中保持数据的安全性。string 类还提供了各种构造函数、操作符重载和格式化功能,使字符串操作更加灵活和高效。
鲜于言悠
2024/04/30
3500
C++从入门到精通——string类
C++:String的模拟实现
模拟实现的节奏比较快,大家可以先去看看博主的关于string的使用,然后再来看这里的模拟实现过程
小陈在拼命
2024/03/08
1110
C++:String的模拟实现
C++:String类的使用
这其实是将在常量区的常量字符串拷贝到数组中,我们会在数组的结尾多开一个空间存储\0,这样我们如果想在访问的时候,比如打印,我们总是认为这个字符串是会读取到\0结束的
小陈在拼命
2024/03/03
2010
C++:String类的使用
C++ —— 关于string类
string文档链接:cplusplus.com/reference/string/string/?kw=string
迷迭所归处
2024/11/19
800
C++ —— 关于string类
相关推荐
【C++】模拟实现string类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档