string字符串进行分割

c++标准库中,对string字符串并没有提供分割操作,需要自己手动实现此功能。

方式1:

      采用 std::stringstream 输入字符串,通过getline()函数,来对字符串进行分割。

#include <sstream>void getSplit(std::string s, char cDelims, std::vector<std::string> & res)
{std::stringstream ss;ss << s;std::string t;while (getline(ss, t, cDelims))res.push_back(t);
}int main()
{std::string TestList2 = "123/456//789/100";std::vector<std::string> strDest3;getSplit(TestList2,'/',strDest3);return 0;
}

输出结果:

方式二:

      采用string的成员方法,find() 和substr()来对字符串进行分割。

int getSplit(std::string strSource,std::vector<std::string>& strDest, const std::string& strDelims)
{strDest.resize(0);const char* pdelims = strDelims.c_str();int nLimIndex = 0;int nLimLen = strDelims.length();int nContentIndex = 0;bool bContinue = true;while (bContinue){nLimIndex = strSource.find(pdelims, nContentIndex);if (nLimIndex == -1){bContinue = false;}else{strDest.push_back(strSource.substr(nContentIndex, nLimIndex - nContentIndex));nContentIndex += (nLimIndex - nContentIndex) + nLimLen;}}// 最后一个分隔符 后的内容加入strDest.push_back(strSource.substr(nContentIndex));return strDest.size();
}int main()
{std::string TestList2 = "123/456//789/100";std::vector<std::string> strDest3;getSplit(TestList2, strDest3, "/");return 0;
}

通过find()函数在查找索引值,对nContentIndex 进行添加达到偏移的效果。再使用substr(),获取对应的子符号,存放在vector中。

输出结果:

方式三:

采用string的成员方法find_first_not_of(),find_first_of()和substr(),达到分割效果

int getSplit(std::string strSource,std::vector<std::string>& strDest, const std::string& strDelims)
{int n = 0;	// i 需要的字符索引, j 分隔符所在的索引int i = 0;int j = 0;while (j != std::string::npos){i = strSource.find_first_not_of(strDelims.c_str(), j);if (i == std::string::npos || strSource.size() < i){break;}j = strSource.find_first_of(strDelims.c_str(), i);strDest.push_back(strSource.substr(i, j - i));n++;}return n;
}int main()
{std::string TestList2 = "123/456//789/100";std::vector<std::string> strDest3;getSplit(TestList2, strDest3, "/");return 0;
}

        注意:此方法,原理和方法二类似。在使用此方法时,如果字符串有空字符串不会被统计。

结果:

 和上面两种方式对比,此方法不会存放空字符串。

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

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

相关文章

Unity—MVC分层开发思想

每日一句&#xff1a;当你不努力的时候&#xff0c;天赋就会一点一点被收回 目录 MVC分层开发思想 MVC是什么 MVC的开发步骤 案例&#xff1a;点击按钮实现金币进行添加&#xff0c;并且把金币记录到JSON里 MVC模式实现 背包系统基础代码 背包项目实现步骤 MVC分层开发思…

spring-data-redis概述及用法

一、spring-data-redis spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,使用java操作redis最常用的是使用jedis,但并不是只有jedis可以使用,像jdbc-redis jredis也都属于redis的java客户端,他们之间是无法兼容的,如果你在一个项目中使…

【vue+element ui】大屏自适应中el-select下拉内容在低分辨率下显示不全问题解决

目录 背景 现象 解决方案 背景 最近要把一个1920px*1080px的大屏改成自适应的&#xff1b;最低适配到1028px*720px&#xff1b; 现象 自适应适配改完之后 将电脑屏幕改成1028px*720px分辨率后&#xff0c;下拉显示正常 通过谷歌浏览器设置Toggle device toolbar为1028px*…

Fastjson2 <== 2.0.26反序列漏洞

根据Y4TACKER师傅在2023-03-20发布了一篇关于Fastjson原生反序列化的文章&#xff0c;文章中引入注目的是利用条件限制条件&#xff0c;不常常关注漏洞预警或者内容的几乎都是未发觉Fastjson2 到Fastjson2 2.0.26版本都有问题&#xff0c;其实如果单独去使用一些关键词去搜索&a…

Aws Ec2服务器设置密码登录

通过密钥&#xff0c;ssh登录到服务器 切换到root sudo -i开始设置root的新密码 passwd root输入并确认新密码即可 5.修改ssh配置文件 vim /etc/ssh/sshd_config6.重启sshd配置 systemctl restart sshd

QML中动态增加表格数据

1.QML中的表格实现 import QtQuick 2.15 import QtQuick.Window 2.15import QtQuick.Controls 2.0 import Qt.labs.qmlmodels 1.0 import QtQuick.Layouts 1.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")TableModel{id:table_modelTabl…

接口测试-幂等测试

我们知道一个网站的访问中会有很多各种各样的接口请求 比如说拿一个购物网站来说&#xff0c;有注册&#xff0c;有登录&#xff0c;有浏览商品&#xff0c;有添加购物车&#xff0c;查询购物车商品这些接口&#xff0c;还有一类特殊的接口&#xff0c;比如&#xff1a;支付。…

【JavaEE进阶】 Spring AOP详解

文章目录 &#x1f38b;前言&#x1f38d;Spring AOP核心概念&#x1f6a9;切点(Pointcut)&#x1f6a9;连接点(Join Point)&#x1f6a9;通知(Advice)&#x1f6a9;切面(Aspect) &#x1f340;通知类型&#x1f6a9;注意事项 &#x1f332;PointCut&#x1f384;切面优先级Ord…

elasticsearch中设置查询的请求超时时间

参考&#xff1a;https://www.phpmianshi.com/?id251 背景 因为我们的项目是用的php&#xff0c;为了防止调用搜索时&#xff0c;请求处理时间太长&#xff0c;导致php-fpm占满&#xff0c;所以需要对外部接口设置请求的超时时间&#xff0c;避免过多的超时请求&#xff0c;我…

深入理解Linux线程(LWP):概念、结构与实现机制(1)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;会いたい—Naomile 1:12━━━━━━️&#x1f49f;──────── 4:59 &#x1f504; ◀️ ⏸ ▶️ ☰ &a…

vue 解决:点击左侧相同菜单,右侧页面不重新加载的问题

1、问题描述&#xff1a; 其一、需求为&#xff1a; 无论是通过路由组件形成的平台管理系统&#xff0c;还是通过文件配置形成的平台管理系统&#xff0c;都存在通过切换左侧的导航栏而使右侧的页面切换的业务需求&#xff1b; 其二、问题描述为&#xff1a; A、步骤一&#…

Redis很慢,如何排查及解决?

性能分析工具&#xff1a; 使用Redis自带的命令或者第三方工具进行性能分析&#xff0c;比如INFO命令、MONITOR命令、SLOWLOG命令等。使用外部性能分析工具&#xff0c;如Redis的慢查询日志、Redis的监控工具、操作系统的性能分析工具&#xff08;例如top、htop、sar等&#xf…

基于RISC-V架构的通信DSP的设计以及在5G RedCap基带中的应用(五)-基于RISC-V的RedCap DSP在5G基带中的应用

4 基于RISC-V的RedCap DSP在5G基带中的应用 4.1 基带处理器的关键任务和性能需求 基带处理器是移动通信设备中的关键部件&#xff0c;负责处理无线信号&#xff0c;包括信号的接收、发送和处理。在5G通信系统中&#xff0c;基带处理器的关键任务和性能需求包括以下几个方面&a…

【Linux C | 网络编程】gethostbyname 函数详解及C语言例子

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

常用网络协议配置步骤摘要

目录 一、配置IP地址二、配置静态路由三、配置动态路由&#xff08;OSPF&#xff09;四、配置Telnet五、配置SSH六、配置DHCP七、配置ACL八、配置NAT&#xff08;Easy_IP&#xff09;九、配置NAT&#xff08;Server NAT&#xff09; 一、配置IP地址 进入到接口 添加IP地址 二…

jmeter实战

全局设置 Add->Config Element->User Defined Variables 用户自定义变量name->value格式后面通过 \${xxx}方式引用变量Add -> Pre Processor -> BeanShell PreProcessor 通过代码形式或者shell脚本形式在请求前定义变量shell脚本文件 或者 编写Java 脚本定义变…

就业班 2401--2.29 Linux Day8--存储管理2(LVM)+swap+磁盘阵列raid

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;小伙伴们一定要看到最后&#xff0c;有彩蛋呢^--^ 一、存储管理Ⅱ 逻辑卷LVM &#xff08;Logical Volume Manager&#xff08;逻辑卷管理&#xff09;的简写&#xff09; LVM管理 lvm概念&#xf…

代理IP如何帮助领英账号预防封号限制?

LinkedIn是跨境外贸必备的拓客工具&#xff0c;世界各地的许多专业人士都使用领英来作为发布和共享内容的主要工具&#xff0c;这使得它成为跨境出海必备的渠道工具。 但是不少做外贸的朋友都知道&#xff0c;领英账号很容易遭遇限制封禁&#xff0c;但如果善用工具&#xff0…

单点登录的三种方式

前言 在B/S系统中&#xff0c;登录功能通常都是基于Cookie 来实现的。当用户登录成功后&#xff0c;一般会将登录状态记录到Session中&#xff0c;或者是给用户签发一个 Token&#xff0c;无论哪一种方式&#xff0c;都需要在客户端保存一些信息(Session ID或Token)&#xff0…

redis-RedisTemplate.opsForGeo 的geo地理位置及实现附近的人的功能

redis内部使用的是 zset 数据结构存储&#xff0c;如下 import cn.huawei.VideoApplication; import cn.huawei.domain.Jingqu; import cn.huawei.service.JingquService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired…