概述
发现,之前写的博客中,有一种分割方式是在是有点落后.因此改进了一下,这里主要是第一个函数,百度中可以查到.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
char *strsep(char **stringp, const char *delim)
{
//判断stringp是否为空,提高程序的容错性
char *s;
const char *spanp;
int c, sc;
char *tok;
if ((s = *stringp)== NULL)
return (NULL);
for (tok = s;;) {
c = *s++;
spanp = delim;
do {
if ((sc =*spanp++) == c) {
if (c == 0)
s = NULL;
else
s[-1] = 0;
*stringp = s;
return (tok);
}
} while (sc != 0);
}
}
void pushToVec(std::vector<std::string>&obj,const char *param,std::string token)
{
char *p = (char*)param;
char *key_point;
while(p)
{
while ( key_point = strsep(&p,token.c_str()))//关键字为c或d,它们连续出现了
{
//函数遇到token时,key_point指向token返回
if (*key_point == 0)
continue;
else
break;
}
if (key_point)
obj.push_back(key_point);
}
}
int main()
{
vector<string> obj;
string test("145,456,789,rtyy,http:www.baidu.com;");
string token(",:.;");
//使用","号,":"号,"."号,";"做分隔符
pushToVec(obj,test.c_str(),token);
for (size_t i = 0;i< obj.size();i++)
{
cout<<obj[i]<<endl;
}
return 0;
}
char *strsep(char **stringp, const char *delim)
是用来分割的主要函数,pushTOVec函数仅仅是做了一个封装,将分割后的字符放到一个vector中用来看分割的效果,其实直接打印出来也可以.该函数可以传入多个分割字符,也可以只传入一个.
可以对比一下这个,我早些时候写的:http://blog.csdn.net/wangshiqilin_fjy/article/details/40982417
最后
以上就是标致唇彩为你收集整理的C++ 以多字符为分隔符分割字符串的全部内容,希望文章能够帮你解决C++ 以多字符为分隔符分割字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复