当前位置: 首页 > news >正文

分割std::string成多个string

文章目录

  • 问题描述
  • 前置知识
  • 解决代码

问题描述

假设我们有一个http服务器,此服务器接收客户端发来的http请求,假设请求如下

GET / HTTP/1.1

我们怎么将这个Http请求分割成三份,分别存入不同的string中分别处理?

前置知识

首先std::string的本身存于stack中,但是std::string指向的string存于Heap中,std::string在stack作用域消失的时候自动清除Heap中的字符串

关于std::string的操作
假设我们有一个std::string如下

std::string s;

我们可以有以下的操作
寻找指定字符

s.find('c');

寻找std::string s中的字符c的位子,且返回其下标

s.find('c', 10);

std::string s的下标10开始寻找字符c,且返回其下标

注意下标是从1开始算,而不是0

我们的find找到最后可能会返回一个不存在的数字,这个数字就是std::string::npos;,我们可以将这个数字当成find的结束符号(如果find在循环中)

分割字符串成子字符串

s.substr(start, end);

对于std::string s从index为start开始到index为end结束(不包括end)的字符串截取出来返回

比如我们有一个字符串"hello world"我们对其做s.substr(0, 7);结果是返回"hello w",也就是返回index从0到6的字符串
index是从0开始

解决代码

那么我们就非常容易解决上述问题

#include <iostream>
//#include <thread>
#include <string>
#include <vector>int main(){std::vector<std::string> v;std::string s{"GET / HTTP/1.1"};std::string::size_type start = 0;std::string::size_type end = s.find(' ');for(int i = 0; i < 3; i++){if(end == std::string::npos) v.push_back(s.substr(start, s.length()));std::cout << s.substr(start, end-start) << "\n";v.push_back(s.substr(start, end-start));start = ++end;end = s.find(' ', end);}/*for(auto i: v){std::cout << i <<'\n';} */  
}

相关文章:

分割std::string成多个string

文章目录问题描述前置知识解决代码问题描述 假设我们有一个http服务器&#xff0c;此服务器接收客户端发来的http请求&#xff0c;假设请求如下 GET / HTTP/1.1我们怎么将这个Http请求分割成三份&#xff0c;分别存入不同的string中分别处理? 前置知识 首先std::string的本…...

3月多国更新进出口产品规定

【3月多国更新进出口产品规定】2023年3月多项外贸新规实施&#xff0c;涉及欧盟&#xff0c;伊拉克&#xff0c;泰国&#xff0c;孟加拉国&#xff0c;埃及等多国进出口产品限制及海关税则。1. 3月1日起给予埃塞俄比亚等三国98%税目产品零关税待遇中国国务院关税税则委员会17日…...

nacos相关面试题

Nacos是阿里巴巴开源的一款注册中心和配置中心&#xff0c;它能够实现服务的注册、发现和配置管理等功能。Nacos的实现原理主要分为以下几个部分&#xff1a;注册中心&#xff1a;Nacos作为注册中心&#xff0c;通过提供RESTful API的方式对外提供注册和发现服务。它使用基于Ra…...

Linux基础命令-groupmems管理组群的成员

Linux-usermod修改用户 Linux-useradd创建用户 Linux-userdel删除用户 Linux基础命令-chown修改文件属主 Linux基础命令-chmod修改文件权限 groupmems 命令介绍 先来看看这个命令的帮助信息是什么概念 NAME groupmems - administer members of a user’s primary group group…...

css系统化学习

元素的语义化 SEO:搜索引擎优化 根据搜索引擎展示的规律,语义化的元素更容易被展示获得更多浏览量 字符编码 css历史 内联样式(inline) style"内容全写在等号后面,双引号里面,多个之间用;隔开" 内部样式(internal) style写在head里面,在title下面,不是在body内, …...

AI的简单介绍

什么是AI&#xff1f; AI 是 Artificial Intelligent 的缩写&#xff0c;是我们通常意义上说的人工智能。 简单来说就是让机器能够模拟人类的思维能力&#xff0c;让它能够像人一样感知、思考甚至决策。 为什么要开发AI&#xff1f; 因为在过去&#xff0c;都是我们学习机器…...

【Linux】-- 进程间通讯

目录 进程间通讯概念的引入 意义&#xff08;手段&#xff09; 思维构建 进程间通信方式 管道 站在用户角度-浅度理解管道 匿名管道 pipe函数 站在文件描述符角度-深度理解管道 管道的特点总结 管道的拓展 单机版的负载均衡 匿名管道读写规则 命名管道 前言 原理…...

STM32模拟SPI时序控制双路16位数模转换(16bit DAC)芯片DAC8552电压输出

STM32模拟SPI时序控制双路16位数模转换&#xff08;16bit DAC&#xff09;芯片DAC8552电压输出 STM32部分芯片具有12位DAC输出能力&#xff0c;要实现16位及以上DAC输出需要外挂DAC转换ASIC。 DAC8552是双路16位DAC输出芯片&#xff0c;通过SPI三线总线进行配置控制输出。这里…...

基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)

系统功能架构及各模块功能介绍 智能驾驶舱和高级驾驶辅助系统是一个车载智能终端嵌入式平台&#xff0c;系统是一个能够运行 虚拟化操作系统的软件和硬件的综合体。本文的车载主机包括硬件主控处理器、电源管理芯 片、存储设备、输入输出控制器、数字仪表系统系统、后座娱乐系统…...

oneblog_justauth_三方登录配置【Github】

文章目录oneblog添加第三方平台github中创建三方应用完善信息登录oneblog添加第三方平台 1.oneblog管理端&#xff0c;点击左侧菜单 网站管理——>社会化登录配置管理 ,添加一个社会化登录 2.编辑信息如下&#xff0c;选择github平台后复制redirectUri,然后去github获取cl…...

自行车轮胎充气泵PCBA方案

轮胎充气泵PCBA方案由多种元器件设计组合而成&#xff0c;PCBA是英文Printed Circuit Board Assembly 的简称&#xff0c;也就是说PCB空板经过SMT上件&#xff0c;或经过DIP插件的整个制程&#xff0c;简称PCBA。PCBA是一个电子产品功能实现的最原始的状态&#xff0c;未经过任…...

200 22222

101. blob.png 新到组织的项目经理被分配管理一个具有多名干系人的项目。项目经理希望确定哪些干系人是内部的&#xff0c;哪些干系人是外部的。若要了解干系人的角色&#xff0c;项目经理应该查阅哪一份文件&#xff1f; A. 干系人登记册 B. 干系人分析 C. 干系人管理计划 D.…...

<JVM上篇:内存与垃圾回收篇>13 - 垃圾回收器

笔记来源&#xff1a;尚硅谷 JVM 全套教程&#xff0c;百万播放&#xff0c;全网巅峰&#xff08;宋红康详解 java 虚拟机&#xff09; 文章目录13.1. GC 分类与性能指标13.1.1. 垃圾回收器概述13.1.2. 垃圾收集器分类13.1.3. 评估 GC 的性能指标13.2. 不同的垃圾回收器概述13.…...

广义状态平均法功率变换器建模分析

两种状态平均法在功率变换器建模的应用比较 [!info] Bibliography [1] 高朝晖, 林辉张晓斌 & 吴小华, “两种状态平均法在功率变换器建模的应用比较,” 计算机仿真, no. 241-244248, 2008. [!note] 状态空间平均法采用直流量近似&#xff08;线性系统模型&#xff09;&…...

基于Spring Boot的快递管理系统

文章目录 项目介绍主要功能截图:登录我要收件我要寄件个人信息我收到的我寄出的物流管理用户管理部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项…...

nerdctl不完全使用指南(开发者)

目录 背景 环境配置 1.编译golang可执行文件 2.快速构建镜像 背景 k8s在1.22版本放弃docker作为runtime后采用了containerd&#xff0c;以containerd作为runtime的k8s安装方法已经出现了很多开源集成工具或者解决方案&#xff0c;在此不做赘述。本篇只要是描述在docker被取…...

【独家】华为OD机试 - 分糖果(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

八股总结(二)计算机网络与网络编程

layout: post title: 八股总结&#xff08;二&#xff09;计算机网络与网络编程 description: 八股总结&#xff08;二&#xff09;计算机网络与网络编程 tag: 八股总结 文章目录计算机网络网络模型网络体系结构在浏览器输入一个网址后回车&#xff0c;背后都发生了什么&#x…...

ChatGPT  一本正经的胡说八道 那也看看原理吧

最近&#xff0c;ChatGPT横空出世。这款被马斯克形容为“强大到危险”的AI&#xff0c;不但能够与人聊天互动&#xff0c;还能写文章、改代码。于是&#xff0c;人们纷纷想让AI替自己做些什么&#xff0c;有人通过两分钟的提问便得到了一篇完美的论文&#xff0c;有人希望它能帮…...

ChatGPT:一个人机环境系统交互的初级产品

从人机环境系统智能的角度看&#xff0c;Chatgpt就是一个还没有开始上道的系统。“一阴一阳之谓道”&#xff0c;Chatgpt的“阴”&#xff08;默会隐性的部分&#xff09;尚无体现&#xff0c;就是“阳”&#xff08;显性描述的部分&#xff09;还停留在人类与大数据交互的浅层…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...