C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。

在C++中经常会使用到snprintf来格式化一些输出。为了正确地完成这个任务,必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。此外,还必须使用正确的格式化符。如果使用了不正确的格式化符,会导致非预知的后果。

1. snprintf需要注意buff的大小,以及对返回值的判断

 1 #include <stdio.h>
 2
 3 int main(){
 4     char *gcc= "gcc";
 5     int no = 1;
 6
 7     ///调节char数组的大小可以看到不同的输出。
 8     ///因此一定要注意buff的大小, 以及snprintf的返回值
 9     char buff[10];
10     int ret = 0;
11     ret = snprintf(buff, sizeof(buff), "%s is No %d", gcc, no);
12     if (ret >= 0 && ret < sizeof(buff)){
13         printf("%s\n", buff);
14     }
15     else{
16         printf("err ret:%d\n", ret);
17     }
18     return 0;
19 }

2. 使用stringstream

<sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作

使用stringstream比snprintf更加省心。

std::stringstream比std::string使用更加灵活,支持各种格式。

 1 #include <stdio.h>
 2 #include <sstream>
 3
 4 int main(){
 5     char *gcc= "gcc";
 6     int no = 1;
 7
 8     std::stringstream stream;
 9     stream << gcc;
10     stream << " is No ";
11     stream << no;
12     printf("%s\n", stream.str().c_str());
13
14     stream.str(""); ///重复使用前必须先重置一下
15     stream << "blog";
16     stream << ' ';
17     stream << "is nice";
18     printf("%s\n", stream.str().c_str());
19     return 0;
20 }

输出:

cplusplus关于snprintf有详细的说明: http://www.cplusplus.com/reference/cstdio/snprintf/?kw=snprintf

C++ stringstream 简化数据类型转换相关推荐

  1. C++-std:stringstream【数据类型转换、多个字符串拼接、分割字符串】

    首先,需要包含头文件<sstream>: #include <sstream> <sstream> 定义了三个类:istringstream.ostringstre ...

  2. java 数据类型转换的一场_Java基础 — 四类八种基本数据类型

    整型:整数类型int 一般的数据. long 极大的数据. short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组. byte 用于特定的场合,比如底层的文件处理或者需要 ...

  3. matlab强制数据类型转换

    >> x=uint8(8); >> class(x) %查看类型 ans = uint8 >> y=double(x); %转双精度 >> class( ...

  4. Qt常用数据类型转换

    Qt常用数据类型转换 1. char *与const char *的转换 char *ch1="hello11"; const char *ch2="hello22&qu ...

  5. C语言中强制数据类型转换

    字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255(有些机器把char ...

  6. 数据类型转换pytorch

    du = torch.ones([2,2]) a = np.array([[1,2],[3,4]],dtype=np.float32) b = torch.from_numpy(a)#数据类型是不变的 ...

  7. tf.cast()数据类型转换

    tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32. cast定义: cast(x, ...

  8. Java中如何实现Date与String之间的数据类型转换

    String 数据类型转换成 Date String inputDate = "2021-04-11";Date outputDate = null;SimpleDateForma ...

  9. Java 数据类型转换

    学而时习之,温故而知新. 数据类型转换,先放一张图,了解数据类型 简单数据类型之间的转换又可以分为: 1 低级到高级的自动类型转换 2 级到低级的强制类型转换 3 包装类过渡类型转换. (有时候我们有 ...

最新文章

  1. 重磅 | 谷歌Waymo最新发布可完全脱离人类操控的自动驾驶汽车
  2. 干货+福利!MySQL常见的面试题+索引原理分析!
  3. live555 源码分析:子会话 SDP 行生成
  4. 为什么销售员贷款比较难?
  5. java udp ip端口 设置_UDP端口扫描Java只找到1个开放的UDP端口
  6. 判定是否过拟合、欠拟合的一种方式
  7. char强制类型转换为int_为强制类型转换正名
  8. vmware不能resume问题,Collect Support Data,vmware.log
  9. 机器学习笔记(五)回归模型
  10. 数据挖掘导论完整版pdf中文
  11. windows7下将mysql加入环境变量
  12. cdh 6哈希验证失败解决方法
  13. 企业管理决策之金字塔思维
  14. Axure RP 9基础教程(四)-文件及文件设置
  15. excel中文显示乱码
  16. 2022 计算机视觉顶会论文----目标检测
  17. python初体验-hello world答案_第三节 Hello world --python初体验
  18. linux下退出mysql
  19. bedtools指南
  20. 创新的功劳不属于某一个人---读《创新者》有感

热门文章

  1. Linux下安装java(Ubuntu为例)
  2. 实现gps与服务器通信协议,一种自适应GPS通信协议分析算法的设计与实现
  3. Linux控制台打开显示字符画,Linux 命令行字符画工具
  4. gdc服务器老显示drs,VMware ESXi 高可用之drs
  5. c语言 linux取运行目录,c语言获取当前工作路径的实现代码(windows/linux)
  6. Python爬虫9大入门学习知识点
  7. jsp中如何显示mysql数据库数据类型_jsp中如何以表格形式显示数据库中一个字段的数据?...
  8. 序列每天从1开始_时间序列预测一
  9. python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片
  10. 模型与logit_互助问答第33期:条件logit模型相关问题