字符串流stringstream--<sstream>

news2024/10/9 18:18:57

字符串流stringstream流详解

一.stringstream是C++提供的一个字符串流,与iostream和fstream的操作方法类似,只是功能不同。要使用字符串流必须包含其头文件<sstream>。

#include<sstream>

二.stringstream字符串流通常用来做数据转换,用于字符串与其他变量类型的转换,相较于c库的转换,更加安全、自动和直接。

三.<sstream>库定义了三种类:istringstream、ostringstream、stringstream

①.istringstream:负责流的输入,将字符串数据转换回其实际类型。

istringstream iss;
cout << typeid(iss).name() << endl;

②.ostringstream:负责流的的输出,将不同类型的数据转换为字符串类型数据。

ostringstream oss;
cout << typeid(oss).name() << endl;

③.stringstream:同时负责流的输入和输出(类似于fstream相较于ifstream和ofstream)

stringstream ss;
cout << typeid(ss).name() << endl;

三种类的内置名称:

四. 通过插入器"<<"和析取器">>"这两个运算符可以直接对stringstream上的数据进行输入和输出,而将stringstream中的全部数据输出则是使用成员函数str(),有两种形式:

①.void str():无参数形式,用于将stringstream中的数据以string字符串的形式输出

②.void str(const string&s1):以字符串为参数,覆盖stringstream流中的数据

C++代码示例:

ostringstream oss;
oss << "GodFishhh and AFish" << " " << 20030331 << endl;
//成员函数str()的无参数形式
cout << oss.str() << endl;

//成员函数str()的有参数形式
oss.str("with parameter");
cout << oss.str() << endl;

程序运行结果:

可知oss.str("with parameter")用参数with parameter覆盖了先前oss流中的内容。

五.利用有参数的成员函数void str(const string&s1)清空流中的数据

oss.str(" ");

C++代码示例:

ostringstream oss;
oss << "GodFishhh and AFish" << " " << 20030331 << endl;
//成员函数str()的无参数形式
cout << oss.str() << endl;

//成员函数str()的有参数形式
//oss.str("with parameter");
oss.str(" ");
cout << oss.str() << endl;

程序运行结果:

此时运行结果的第二行为空,可知oss流中的数据已被清空。

六.成员函数clear()

stringstream的成员函数clear()与fstream中的成员函数clear()类似,可以通过clear()函数清除流的错误状态,主要用在stringstream重复使用时或者多个stringstream对象构造时进行清空,防止之前的缓冲停留在输入输出流中。

C++代码示例:

若不通过clear()清除缓冲

stringstream ss;
ss << "GodFishhh";
cout << ss.str() << endl;
ss << "AFish";
cout << ss.str();

程序运行结果:

通过clear()清除缓冲

stringstream ss;
ss << "GodFishhh";
cout << ss.str() << endl;
ss.clear();
ss << "AFish";
cout << ss.str();

程序运行结果:

 

 发现程序的运行结果并没有发生改变,这是什么原因呢?

  利用成员函数clear()只能清空流的状态,但此时流占用的内存没有改变,多次调用同一个ss对象则导致内存会一直增加,因为stringstream不主动释放内存,若想改变内存,则需要配合成员函数void str(const string&s1)来完成。

stringstream ss;
ss << "GodFishhh";
cout << ss.str() << endl;
ss.clear();
ss.str(" ");
ss << "AFish";
cout << ss.str();

此时stringstream先前调用所储存的内容被完全清除,完成对stringstream对象的多次调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python-闭包知识点

目录标题1、函数参数2、闭包3、闭包的使用4、闭包内修改外部变量1、函数参数 def fun01():print(func01 is show) #fun01() 会输出打印结果 print(fun01)#输出&#xff1a;<function ox11....地址> #函数名存放的是函数所在空间的地址fun02 fun01 #函数名也可以像普通…

中国电子学会2021年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)

青少年软件编程&#xff08;图形化&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共 25 题&#xff0c;共 50 分) 执行下列程序&#xff0c;屏幕上可以看到几只小猫&#xff1f;&#xff08;B &#xff09;(2…

奇怪的一些

1、请求200 但是请求回来的是html 网络里会写 200OK from disk cache 这个时候需要清除浏览器缓存 2、base64 引入失败 找一个js文件直接引入 require is not defined import Base64 from ‘***’ https://blog.csdn.net/u011383596/article/details/116712729 3、promise prom…

dataworks插入,分组,排序,关联语句

– 向表中插入数据 – insert into/overwrite table 表名 values (…),(…),…; – insert into/overwrite table 表名 select …; – 创建样例表 create table if not exists temp_test_xsxx_30( xh string comment ‘学号’, xm string comment ‘姓名’, xb string comment…

C++初阶--map和set

目录 关联式容器 set set的模板参数列表 set的构造 set的使用 multiset map map的模板参数 map的构造 map的容量与元素访问 map的使用 multimap 底层结构 AVL树 节点的定义 实现 图解 红黑树 性质 节点的定义 实现 图解​ 红黑树模拟实现STL中的map和set MyMap.h MySet.…

windows系统使用Freeglut+glew库编写opengl程序(Mingw)

Freeglut glut是opengl实用工具集,由Mark Kilgrad所写。可以用来显示窗体,管理用户输入,字体,图像等操作,现在已经停止维护了,它的3.7版本是苹果电脑操作系统Mac OS 10.8(又名“美洲狮”)的opengl实用工具库的框架基础 使用更新的Freeglut替代glut,Freeglut是由Pawel…

论Unity_InputSystem如何使用(一)

一、导入 在Window——PackageManage中搜索InputSystem&#xff0c;下载导入。如果搜不到&#xff0c;则调整为UnityRegistry。 二、更改输入模式 Edit——ProjectSettings——Player——OtherSettings——Configuration——Active Input Handling&#xff0c;选择旧版或者新…

【虚拟现实】密西根大学 AR/VR/MR/XR 课程笔记

AR/VR/MR/XRModule 1 of 4: XR Terminology & ApplicationsVR and ARMixed RealityXRXR technology landscapeModule 1 of 4: XR Terminology & Applications 本模块将建立围绕 XR 的不同概念&#xff0c;并提供相关技术的简要概述。 了解 AR、VR 和 MR 的潜力和局限性…

RPA自动化办公05——Uibot自动抓取网页数据

参考&#xff1a;数据获取和处理_UiBot开发者指南 Python爬虫要对网页文件结构有一定了解&#xff0c;而且写程序一点一点把数据弄出来也很麻烦。 但是Uibot爬取数据是很简单的。 全部流程不过几步&#xff0c;本次爬取某东手机商品的信息&#xff1a; 电商数据爬取 网页长…

VR视频加密SDK方案一机一码

VR视频比传统的平面视频给用户带来更好的体验&#xff0c;而且现在在教育、娱乐等领域VR类视频也越来越多。相比传统的视频制作&#xff0c;VR视频的成本要更高&#xff0c;所以重视VR视频的版权保护提升安全性&#xff0c;是很多VR内容制作商不得不考虑的问题。那么VR视频加密…

【Scipy】菲涅尔积分和羊角螺线

文章目录菲涅尔积分简介复数域的菲涅尔积分羊角螺线菲涅尔积分简介 菲涅尔积分一般被写为S(x)S(x)S(x)和C(x)C(x)C(x)&#xff0c;定义为 S(x)∫0xsin⁡(t2)dt∑n0∞(−1)nx4n3(2n1)!(4n3)C(x)∫0xcos⁡(t2)dt∑n0∞(−1)nx4n1(2n)!(4n1)S(x)\int^x_0\sin(t^2)\text dt\sum^\i…

SpringBoot中如何优雅的使用多线程

本文带你快速了解Async注解的用法&#xff0c;包括异步方法无返回值、有返回值&#xff0c;最后总结了Async注解失效的几个坑。 在 SpringBoot 应用中&#xff0c;经常会遇到在一个接口中&#xff0c;同时做事情1&#xff0c;事情2&#xff0c;事情3&#xff0c;如果同步执行的…

【翻译】为深度学习购买哪种GPU: 我在深度学习中使用GPU的经验和建议

文章目录概述GPU是如何工作的&#xff1f;对深度学习处理速度最重要的GPU规格张量核心没有张量核心的矩阵乘法使用张量核心的矩阵乘法带有张量核心和异步拷贝的矩阵乘法&#xff08;RTX 30/RTX 40&#xff09;和TMA&#xff08;H100&#xff09;内存带宽二级缓存/共享内存/一级…

服务器遭受cc攻击的处置策略

如果服务器遭到了CC攻击&#xff0c;你可以采取以下措施来解决问题&#xff1a;使用防火墙和安全组进行限制&#xff1a;限制服务器的流量以防止进一步的攻击。升级服务器资源&#xff1a;为了应对更高的流量&#xff0c;可以升级服务器的内存&#xff0c;处理器等资源。安装防…

字节跳动青训营--前端day5

文章目录前言一、初识HTTP拓展—输入地址到页面渲染发生了哪些事情二、协议分析1.发展2.报文2.1 请求报文&#xff1a;请求行&#xff1a;请求头主体2.2 响应报文&#xff1a;状态行响应头响应正文2.3缓存3.发展3.1 Http23.2 Https前言 仅以此文章记录学习历程 一、初识HTTP …

kubernetes核心概念 Service

kubernetes核心概念 Servicekubernetes核心概念 Service一、 service作用二、kube-proxy三种代理模式2.1 UserSpace模式2.2 iptables模式2.3 ipvs模式2.4 iptables与ipvs对比三、 service类型3.1 service类型3.2 Service参数四、 Service创建4.1 ClusterIP类型4.1.1 普通Cluste…

1月安全月报 | 2亿Twitter用户数据被公开;美计划发起“黑掉五角大楼3.0”漏洞赏金计划

目录 国外安全热点 &#x1f449;安全政策 &#x1f449;数据安全 &#x1f449;市场趋势 &#x1f449;勒索事件 国内安全热点 &#x1f449;数据安全 &#x1f449;业务安全 &#x1f449;移动安全 &#x1f449;网安政策 为了让大家更全面的了解网络安全的风险&am…

精读JavaScript中的代理(Proxy)与反射(Reflect)

目录 定义与概念 属性及函数 Proxy Reflect 使用场景 如何实现 实现过程 运行效果 应用限制及优点 写在最后 定义与概念 JavaScript中的Proxy与Reflect是ES6中引入的新特性&#xff0c;它们可以帮助我们更高效地控制对象。 代理&#xff08;Proxy&#xff09;是一种…

元宇宙哪些吓死人的概念话题

元宇宙哪些吓死人的概念话题 深层的奥秘&#xff1a;人是符号及符号的意义驱动的 趣讲大白话&#xff1a;现有概念再有东西 ************** **元宇宙与跨学科 2.1 元宇宙与交叉学科 2.2 元宇宙与哲学 2.3 元宇宙与文学 2.4 元宇宙与艺术学 2.5 元宇宙与电影学 2.6 元宇宙与传播…

【面向对象】构造函数与析构函数详解

构造函数与析构函数详解 文章目录构造函数类型参考博客&#x1f60a;点此到文末惊喜↩︎ 构造函数 类型 默认构造函数&#xff08;缺省构造函数&#xff09; 一个类中只能出现一个默认构造函数在调用时&#xff0c;不需要传入实参。因为默认构造函数通常是无参的或所有形参都…