发现,之前写的博客中,有一种分割方式是在是有点落后.因此改进了一下,这里主要是第一个函数,百度中可以查到.
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59#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; }
复制代码
是用来分割的主要函数,pushTOVec函数仅仅是做了一个封装,将分割后的字符放到一个vector中用来看分割的效果,其实直接打印出来也可以.该函数可以传入多个分割字符,也可以只传入一个.
1char *strsep(char **stringp, const char *delim)
可以对比一下这个,我早些时候写的:http://blog.csdn.net/wangshiqilin_fjy/article/details/40982417
最后
以上就是标致唇彩最近收集整理的关于C++ 以多字符为分隔符分割字符串的全部内容,更多相关C++内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复