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;
}