1、算法思想
该题采用 c++ 中的 string 完成比较方便
 对于字符串 string str1=“hehehe:hahaha:xixixi:lalala”
 定义 int pos = 0,记录子串的初始位置
 在循环语句中重复执行以下操作:
(1)、定义 int ret = str1.find(":", pos),用于从初始位置 0 开始查找 :的下标记并录位置
(2)、if(ret < 0) ,查询lalala子串是否含有 :,这种情况就是出现在 最后一个子串的情况,最后一个子串肯定不存在 :,所以必然返回一个负值,并且输出打印分割的最后一个字符串
(3)、否则提取ip中除过最后一个字符串的其余字符串
(4)、让 pos = ret+1,记录提取一个子串之后的字符的起始位置
2、算法实现
#include 
 #include 
 using namespace std;
 void test06()
 {
 string str1=“hehehe:hahaha:xixixi:lalala”;
 int pos = 0; //记录子串的初始位置
 while(1)
 {
 int ret = str1.find(“:”, pos); //从初始位置 0 开始查找 :的下标记并录位置
 if(ret < 0) //查询lalala子串是否含有 :
 {
 string tmp = str1.substr(pos, str1.size()-pos);
 cout<<tmp<<endl;
 break;
 }
string tmp = str1.substr(pos, ret-pos); //提取子串的宽度
 cout<<tmp<<endl;
pos = ret+1; //提取一个子串之后的字符的起始位置
 }
 }
int main(int argc, char *argv[])
 {
 test06();
 return 0;
 }
3、算法结果






![[Java]Cookie机制](https://img-blog.csdnimg.cn/img_convert/95a3396126b1e8d1a4e426a61b924cb7.webp?x-oss-process=image/format,png)







![[CVE漏洞复现系列]CVE2017_0147:永恒之蓝](https://img-blog.csdnimg.cn/ce05a22ec04d4f6b82b5389b40a178c1.png#pic_center)





