C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream头文件。

  1. istringstream类用于执行串流的输入操作。
  2. ostringstream类用于执行串流的输出操作。
  3. strstream类同时可以支持串流的输入输出操作。

istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。

由于sstream使用string对象代替字符数组,避免缓冲区溢出的危险;其次,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。相比c库的数据类型转换,sstream更加安全、自动和直接。

使用样例:

#include <sstream>
#include <string>
#include <iostream>int main()
{std::stringstream ss;std::string str1, str2;int iv = 10;// 将int类型的值放入输入流中。ss << iv << " is a test number.";// 从sstream中抽取前面插入的int类型的值,赋给string类型。// 以空格为分隔符。ss >> str1 >> str2;std::cout << "str1: " << str1 << std::endl;std::cout << "str2: " << str2 << std::endl;// 将sringstream类型转为string类型,以实现字符串拼接方法。std::cout << "ss.str(): " << ss.str() << std::endl;// 清空sstream的方法。// 在进行多次类型转换前,必须先运行clear()ss.str("");ss.clear();bool bl = true;int it = 0;ss << bl;ss >> it;std::cout << "(bool->int)it: " << it << std::endl;ss.clear();std::string str3 = "10";ss << str3;ss >> it;std::cout << "(string->int)it: " << it << std::endl;
}

输出结果:

str1: 10
str2: is
ss.str(): 10 is a test number.
(bool->int)it: 1
(string->int)it: 10

参考:

  1. c++ sstream
  2. C++的sstream标准库详细介绍

C++ - sstream标准库(串流控制)相关推荐

  1. C++的iostream标准库介绍+使用详解(转)

    0 为什么需要iostream 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所 以讨论此标准库是有必要的,它与C语言的 stdio库不同,它从一开始就 ...

  2. C++的iostream标准库介绍

    C++的iostream标准库介绍 0 为什么需要iostream 1 iostream: istream 和 ostream 2 fstream: ifstream 和 ofstream 3 str ...

  3. 最新 C++的iostream标准库介绍(1)

    我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象 ...

  4. vscode无法打开源文件iostream_C++的iostream标准库介绍(1)

    我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象 ...

  5. 2 C++标准库(1- IO库、顺序容器和泛型算法)

    2-1 C++标准:IO库.顺序容器和泛型算法 8 IO库 8.1 IO类 8.2 文件输入输出 8.2.1 使用文件流对象 8.2.2 文件模式 8.3 string流 8.3.1 使用istrin ...

  6. 【C++标准库】std::string用法指南源码剖析

    文章目录 1.ASCII码 (1)计算机如何表达字符 2.C 语言中的字符类型 char (1)思想:char 即整数 (3)C 语言帮手函数 (4)C语言中的字符串 (4)C 语言转义符 3.C++ ...

  7. Python 标准库之 xml.etree.ElementTree xml解析

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

  8. c++标准库 及 命名空间std

    1.命名空间std C++标准中引入命名空间的概念,是为了解决不同模块或者函数库中相同标识符冲突的问题.有了命名空间的概念,标识符就被限制在特定的范围(函数)内,不会引起命名冲突.最典型的例子就是st ...

  9. C++标准库简介(转)

    C++标准库的所有头文件都没有扩展名.C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能. <cname>形式的标准头文件[ <complex>例外]其 ...

最新文章

  1. 【译】表变量和临时表的比较(转)
  2. 使用websploit在局域网全自动渗透
  3. bestcoder #67 div2 1003 Black Jack 概率dp
  4. Boost:BOOST_ASSERT扩展的用法测试程序
  5. 呼呗电销机器人_为什么企业销售电销都用电销外呼智能机器人
  6. vue.js踩坑之单向数据流
  7. Android屏幕计算正方形,Android Camera 正方形预览(二)
  8. 在linux中显示所有正在运行的进程
  9. CSS3中(2D、3D、动画)重点整理
  10. 中缀表达式、前缀表达式、后缀表达式
  11. 常见公文写作规范,公文写作常见错误更正对照表!
  12. 设计数据库 ER 图太麻烦?不妨试试这两款工具,自动生成数据库 ER 图!!!
  13. 数据库设计(三)——数据库设计规范
  14. PlayStation@4功能介绍及测试应用
  15. 关于hash(一):基本概念
  16. 74LVC1G3157GW
  17. 为什么阿里巴巴最爱招Java开发程序员?
  18. 【网络爬虫】实现有道翻译提取
  19. 单目相机三维姿态解算
  20. 海盗湾联合创始人在瑞典被判入狱两年

热门文章

  1. Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization
  2. Matlab的bsxfun函数
  3. Android 主题资源风格定制 1
  4. C# winfrom NPOI导出Excel 添加视频、音频文件
  5. 软件工程专业大学生的一年半 | 2022年度总结
  6. 卸载 windows 2003 自带 .NET Framework (dotnetfx cleanup tool)
  7. 全站最详细的Python numpy 搭建全连接神经网络模型教程(理论计算+代码实现)(不止能预测手写数字数据,准确率93.21%)
  8. 软件的性能指标及评估方法
  9. Qt: Linux下生成.xlsx文件(excel表格文件)
  10. JavaScript 隐式类型转换