stringstream

news/2025/3/28 10:20:37/文章来源:https://www.cnblogs.com/tong2357/p/18791209

stringstream 是 C++ 提供的专门用于处理字符串的 输入输出 流类。
在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前要被创建,使用后要被删除。
stringstream 定义于头文件 ,它其实是个别名,具体定义如下:

typedef basic_stringstream stringstream;

向对象输入字符串 : "<<" 表示向一个对象中输入
stringstream ss;
ss << s;

在创建对象的时候使用字符串初始化:
stringstream ss("hello stringstream");
cout << ss.str() << endl;

上两种ss的区别:

include

include

using namespace std;

int main()
{
string str("asd");
// 第二种构造
stringstream ss2(str);
cout << ss2.str() << endl;

// 第一种构造
ss2 << "r";
cout << ss2.str() << endl;ss2 << "13";
cout << ss2.str() << endl;ss2 << "hy";
cout << ss2.str() << endl;return 0;

}

/*
输出:
asd
rsd
r13
r13hy
*/

可以发现,利用第一种构造函数创建对象时,输入字符串后直接进行字符串拼接,而第二种构造方式,在进行字符串拼接时,首先把原本的字符串覆盖掉,之后再进行拼接。

 如果不想原来的字符串被覆盖,则需要换一种构造方式,如下:#include <iostream>
#include <sstream>
using namespace std;int main()
{ostringstream ss("1 2 3 4 ", std::ios_base::ate);	// append 方式追加cout << ss.str() << endl;ss << "5 3 4";cout << ss.str() << endl;return 0;
}
/*
输出:
1 2 3 4 
1 2 3 4 5 3 4
*/

stringstream进行类型转换:

int num = 123;
std::stringstream ss;
ss << num; // 将整数放入流中
std::string str = ss.str();

利用 stringstream 指定字符分割字符串

上面描述了利用 stringstream 去除字符串空格,其实就是利用空格来分割字符串,同样,也可以指定其他字符对字符串进行分割,这需要与 getline() 函数搭配使用,下面以逗号分割字符串为例:getline 详解:
getline()的原型是istream& getline ( istream &is , string &str , char delim );其中 istream &is 表示一个输入流,例如,可使用cin;string str ; getline(cin ,str)也可以使用 stringstreamstringstream ss(“test#”) ; getline(ss,str)char delim表示遇到这个字符停止读入,通常系统默认该字符为’\n’,也可以自定义字符

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apisix~csrf插件

https://www.devzery.com/post/how-to-test-api-with-csrf-token-in-postman-complete-guide https://apisix.apache.org/docs/apisix/plugins/csrf/配置信息 {key: token的密钥expires:过期时间,默认7200(秒)name: token在cookie中的名称,默认是apisix-csrf-token }插件…

DeepSeek 官方推出的实用集成工具百宝箱,建议收藏!

项目介绍 该实用集成工具百宝箱汇聚了DeepSeek官方精心挑选和推荐的各类集成工具(其中包括:应用程序、AI Agent 框架、AI数据应用框架、RAG 框架、浏览器插件、VS Code 插件等),旨在帮助用户轻松实现DeepSeek功能的扩展与应用。无论你是AI开发者、数据分析师还是普通用户,…

律所管理太费劲?用对系统,让你的律所越做越大!

做律所管理,光会打官司不够,你得是个“ 全能型选手 ”。 不仅要懂法律,还得会 经营、管理、营销、服务 。否则,客户难找、团队不好带、案子越来越乱,日子也越来越难过。 那具体需要哪些能力呢?这 六大能力 ,每一项都很重要,但要靠人工管理,效率太低,容易出错。这时候…

20244221李留斌《python程序设计》实验一报高

20244104 2024-2025-2 《Python程序设计》实验x报告 课程:《Python程序设计》 班级:2442 姓名:李留斌 学号:20244221 实验教师:王志强 实验日期:2025年3月23日 必修/选修: 公选课 一、实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练习…

Pydantic异步校验器深:构建高并发验证系统

title: Pydantic异步校验器深:构建高并发验证系统 date: 2025/3/25 updated: 2025/3/25 author: cmdragon excerpt: Pydantic异步校验器基于async/await实现非阻塞验证,支持DNS查询等网络操作。高并发场景下运用批量API验证与异步数据库查询,通过asyncio.gather提升吞吐效…

《电子营业执照》的下载及使用

【电子营业执照的下载及使用】可以直接点此进行学习,也可以看下面我自己写的 一、电子营业执照的下载 (1)打开法人的手机微信,在微信中搜索“电子营业执照小程序”(2)点击“下载执照”(3)输入身份信息(4)人脸识别(5)选择登记地“甘肃”(6)下载执照二、电子营业执…

3月24日练习

第五题:最优配餐 考点:多源bfs 当权重(每条边开销为1)的最短路问题可以用bfs 做法:将每个分店先入队,然后依次对每个分店向前后左右走,只要能到达客户那里那么当前饭店就是距离客户最近的饭店,满足了这个客户以后要对这个用户标注不重复遍历。 算法思想:#include<b…

lc 315. 计算右侧小于当前元素的个数

```C typedef struct Node {int num; // 值int index; // 原数组索引int size; // 逆序对数量 } Node;class Solution { public:void mergeSort(vector<Node> &arr, int left, int right) {if (left >= right) return;int mid = (left + right) >> 1;…

windows 修改chrome默认安装目录

现在最新版的 Chrom 在安装时仍然不允许用户选择安装路径, 32 位版本会安装到 C:\Program Files (x86)\Google\Chrome 目录,64 位版本会安装到 C:\Program Files\Google\Chrome 目录,而其用户数据目录仍然被设置在当前用户目录下 C:\Users\%USERPROFILE%\AppData\Local\Goog…

Android 8.0系统的通知栏适配

为什么要进行通知栏适配? 现在经常是早上一觉醒来拿起手机一看,通知栏上全是各种APP的推送,烦。随着智能手机发展的成熟,通知栏搞得越来越不讨人喜欢了。各个App都希望抢占通知栏的空间,来尽可能地销售自己的产品。 通知栏是Android系统原创的,虽说乔布斯一直认为Android…

日事清25年战略目标如何高效执行?企业组织架构优化与项目管理全流程解析

如何使用日事清搭建一份可实现的25年战略目标-执行体系?在这个快节奏的商业世界里,每个企业都需要弄清楚几个超重要的问题: 首先,你的企业使命和抱负够不够清晰 ——能不能让每一个员工充满归属感和使命感? 然后,你们团队有没有一个明确的目标体系?还是只是在“摸着石头…

Obsidian 笔记一键转换发布为 Jekyll 博客

Obsidian 是一款功能强大且灵活的知识管理和笔记软件,与 Jekyll 这一轻量级静态博客框架的结合,既能保留 Obsidian 的网状知识关联优势,又能借助 Jekyll 的高效编译能力快速生成标准化博文。 Obsidian 笔记自动转换为 Jekyll 博客一文介绍了如何把挑选出的 Obsidian 笔记转换…