当前位置: 首页 > 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;还停留在人类与大数据交互的浅层…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...