C++ - sstream标准库(串流控制)
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream头文件。
- istringstream类用于执行串流的输入操作。
- ostringstream类用于执行串流的输出操作。
- 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
参考:
- c++ sstream
- C++的sstream标准库详细介绍
C++ - sstream标准库(串流控制)相关推荐
- C++的iostream标准库介绍+使用详解(转)
0 为什么需要iostream 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所 以讨论此标准库是有必要的,它与C语言的 stdio库不同,它从一开始就 ...
- C++的iostream标准库介绍
C++的iostream标准库介绍 0 为什么需要iostream 1 iostream: istream 和 ostream 2 fstream: ifstream 和 ofstream 3 str ...
- 最新 C++的iostream标准库介绍(1)
我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象 ...
- vscode无法打开源文件iostream_C++的iostream标准库介绍(1)
我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象 ...
- 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 ...
- 【C++标准库】std::string用法指南源码剖析
文章目录 1.ASCII码 (1)计算机如何表达字符 2.C 语言中的字符类型 char (1)思想:char 即整数 (3)C 语言帮手函数 (4)C语言中的字符串 (4)C 语言转义符 3.C++ ...
- Python 标准库之 xml.etree.ElementTree xml解析
Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...
- c++标准库 及 命名空间std
1.命名空间std C++标准中引入命名空间的概念,是为了解决不同模块或者函数库中相同标识符冲突的问题.有了命名空间的概念,标识符就被限制在特定的范围(函数)内,不会引起命名冲突.最典型的例子就是st ...
- C++标准库简介(转)
C++标准库的所有头文件都没有扩展名.C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能. <cname>形式的标准头文件[ <complex>例外]其 ...
最新文章
- 【译】表变量和临时表的比较(转)
- 使用websploit在局域网全自动渗透
- bestcoder #67 div2 1003 Black Jack 概率dp
- Boost:BOOST_ASSERT扩展的用法测试程序
- 呼呗电销机器人_为什么企业销售电销都用电销外呼智能机器人
- vue.js踩坑之单向数据流
- Android屏幕计算正方形,Android Camera 正方形预览(二)
- 在linux中显示所有正在运行的进程
- CSS3中(2D、3D、动画)重点整理
- 中缀表达式、前缀表达式、后缀表达式
- 常见公文写作规范,公文写作常见错误更正对照表!
- 设计数据库 ER 图太麻烦?不妨试试这两款工具,自动生成数据库 ER 图!!!
- 数据库设计(三)——数据库设计规范
- PlayStation@4功能介绍及测试应用
- 关于hash(一):基本概念
- 74LVC1G3157GW
- 为什么阿里巴巴最爱招Java开发程序员?
- 【网络爬虫】实现有道翻译提取
- 单目相机三维姿态解算
- 海盗湾联合创始人在瑞典被判入狱两年
热门文章
- Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization
- Matlab的bsxfun函数
- Android 主题资源风格定制 1
- C# winfrom NPOI导出Excel 添加视频、音频文件
- 软件工程专业大学生的一年半 | 2022年度总结
- 卸载 windows 2003 自带 .NET Framework (dotnetfx cleanup tool)
- 全站最详细的Python numpy 搭建全连接神经网络模型教程(理论计算+代码实现)(不止能预测手写数字数据,准确率93.21%)
- 软件的性能指标及评估方法
- Qt: Linux下生成.xlsx文件(excel表格文件)
- JavaScript 隐式类型转换