当前位置: 首页 > 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';} */  
}
http://www.lryc.cn/news/31960.html

相关文章:

  • 3月多国更新进出口产品规定
  • nacos相关面试题
  • Linux基础命令-groupmems管理组群的成员
  • css系统化学习
  • AI的简单介绍
  • 【Linux】-- 进程间通讯
  • STM32模拟SPI时序控制双路16位数模转换(16bit DAC)芯片DAC8552电压输出
  • 基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)
  • oneblog_justauth_三方登录配置【Github】
  • 自行车轮胎充气泵PCBA方案
  • 200 22222
  • <JVM上篇:内存与垃圾回收篇>13 - 垃圾回收器
  • 广义状态平均法功率变换器建模分析
  • 基于Spring Boot的快递管理系统
  • nerdctl不完全使用指南(开发者)
  • 【独家】华为OD机试 - 分糖果(C 语言解题)
  • 八股总结(二)计算机网络与网络编程
  • ChatGPT  一本正经的胡说八道 那也看看原理吧
  • ChatGPT:一个人机环境系统交互的初级产品
  • PaddlePaddle本地环境安装(windows11系统)
  • DBeaver 超级详细的安装与使用
  • 计算机网络的166个概念 你知道几个第七部分
  • 海尔三翼鸟:生态聚拢的密度,决定场景落地速度
  • 前端基础知识
  • LiveData 面试题库、解答、源码分析
  • kotlin用object实现单例模式,companion object与java静态
  • 智慧楼宇中的“黑科技”
  • 炫云渲染质量功能测试
  • SpringBoot入门
  • D. Constant Palindrome Sum(差分数组维护)