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)





