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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux UART 开发指南
介绍 Linux 内核中 UART 驱动的接口及使用方法,为 UART 设备的使用者提供参考。
韦东山
2023/02/25
6.6K0
Linux UART 开发指南
Linux TWI开发指南
介绍 Sunxi 平台上 TWI 驱动接口与调试方法,为 TWI 模块开发提供参考。
韦东山
2023/02/25
2.6K0
Linux TWI开发指南
一文搞懂 | Linux pinctrl/gpio子系统
pinctrl 子系统和 gpio 子系统虽然难度不大,但在内核里的使用率非常高,本文争取一次性把相关内容介绍一遍。
刘盼
2023/01/05
1.4K0
一文搞懂 | Linux pinctrl/gpio子系统
全志 Tina Linux 系统资源配置 开发指南 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板
Tina Linux SDK的根目录下,执行make menuconfig命令可进入Tina Linux的配置界面。
韦东山
2022/12/28
9.4K0
全志 Tina Linux 系统资源配置 开发指南 支持百问网T113 D1-H哪吒 DongshanPI-D1s V853-Pro等开发板
Linux SPI 开发指南
SPI 是一种高速、高效率的串行接口技术。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换,被广泛应用于 ADC、LCD 等设备与 MCU 之间。全志的 spi 控制器支持以下功能:
韦东山
2023/02/25
9.3K0
Linux SPI 开发指南
解决LicheeRV 86 Panel在tina2.0配置lcd GPIO引脚及colorbar闪屏的问题
设备树修改参考了https://github.com/Tina-Linux/tina-d1x-lichee-rv和sipeed提供的licheerv_d1_compile。
阿志小管家
2024/02/02
5470
解决LicheeRV 86 Panel在tina2.0配置lcd GPIO引脚及colorbar闪屏的问题
Tina_Linux_Key_快速配置使用指南
Allwinner 平台支持三种不同类型的Key:GPIO-Key,ADC-Key,AXP-Key。其中,GPIOKey又包括普通的gpio 按键和矩阵键盘。
韦东山
2023/02/25
2.4K0
Tina_Linux_Key_快速配置使用指南
Linux RTC 开发指南
介绍Linux 内核中RTC 驱动的适配和DEBUG 方法,为RTC 设备的使用者和维护者提供参考。
韦东山
2023/02/25
1.7K0
Linux RTC 开发指南
Linux U-Boot 开发指南
介绍 U-Boot 的编译打包、基本配置、常用命令的使用、基本调试方法等, 为 U-BOOT 的移植及应用开发提供了基础。
韦东山
2023/02/25
4.7K0
Linux U-Boot 开发指南
Tina_Linux_Wi-Fi_开发指南
介绍Allwinner 平台上Wi-Fi 驱动移植,介绍Tina Wi-Fi 管理框架,包括Station,Ap 以及Wi-Fi 常见问题。
韦东山
2023/02/25
5K0
Tina_Linux_Wi-Fi_开发指南
Linux MMC 开发指南
介绍 Linux 内核中 SD/MMC 子系统的接口及使用方法,为 SD/MMC 设备驱动的开发提供参考。
韦东山
2023/02/25
3K0
Linux MMC 开发指南
全志A64 设备树里的gpio应用开发
获取到int类型的gpio口后,就可以使用linux/gpio.h里的gpio口操作函数:
杨源鑫
2019/07/04
4K1
全志A64 设备树里的gpio应用开发
全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853
素时钟不超过180MHz 都支持。或者两个串行RGB 接口,串行RGB 的最高分辨率最大不超过800*480@60
韦东山
2022/12/28
5.5K0
全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853
Tina_Linux_音频_开发指南
Allwinner 硬件平台R6, R7s, R11, R16, R18, R30, R58, R328, R332, R333, R311, MR133, T7, R329, MR813, R818, R818B, R528, H133, V853, F133。
韦东山
2023/02/25
7.6K0
Tina_Linux_音频_开发指南
Linux USB 开发指南
USB 有主机功能和从设备功能。做主机时,能连接 U 盘、USB 鼠标等 USB 设备;做从设备时,具有 ADB 调试等从设备功能。
韦东山
2023/02/25
31.3K0
Linux USB 开发指南
Linux 驱动开发 / gpio子系统 / 快速入门
gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。
fensnote
2021/07/09
5.5K0
Linux 驱动开发 / gpio子系统  / 快速入门
04_Pinctrl子系统主要数据结构
pincontroller虽然是一个软件的概念,但是它背后是有硬件支持的,所以可以使用一个结构体来表示它:pinctrl_dev。
韦东山
2021/12/08
7760
04_Pinctrl子系统主要数据结构
全志V851S开发版无法正常挂载TF卡,sdc0、sdc1报错
硬件设备及镜像 主板为:Yuzuki Lizard V851S开发板 宿主机环境:ubuntu 22.04 SDK版本:Yuzukilizard的github上的Docker镜像 img为:github上Yuzukilizard释放的镜像:[01]v851s_linux_lizard_uart0_2022_12_29.img v851s_linux_lizard_uart0_2022_12_29.img
阿志小管家
2024/02/02
3510
Linux standby 开发指南
• 休眠唤醒指系统进入低功耗和退出低功耗模式,一般称之为 Standby。standby 分为 super standby 和 normal standby,区别是 cpu 是否掉电。
韦东山
2023/02/25
1.7K0
Linux standby 开发指南
全志D1-H Tina Linux LEDC开发指南
在tina 根目录下,执行makekernel_menuconfig,配置路径如下:
一牛网论坛
2022/12/13
1.6K0
推荐阅读
相关推荐
Linux UART 开发指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档