做公司网站成本,深圳网站建设推广优化seo,学编程的正规网课学校,企业网站自己怎么做文章目录问题描述前置知识解决代码问题描述
假设我们有一个http服务器#xff0c;此服务器接收客户端发来的http请求#xff0c;假设请求如下
GET / HTTP/1.1我们怎么将这个Http请求分割成三份#xff0c;分别存入不同的string中分别处理?
前置知识
首先std::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 vectorint main(){std::vectorstd::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;} */
}