c++分割字符串split方法实现
Posted bitcarmanlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++分割字符串split方法实现相关的知识,希望对你有一定的参考价值。
c++标准库中没有实现split函数,但是split字符串又是特别特别常见的常规操作。网络上能找到很多split的实现方式,下面记录一下本人认为比较优雅,可读性也比较好的两种实现方式。
1.使用find方法
如果是比较老的c++版本,可以使用find方法来实现split功能。
void run()
string s = "aa bb cc dd";
const string delim = " ";
int nPos = 0;
vector<string> vec;
nPos = s.find(delim.c_str());
while(-1 != nPos)
string temp = s.substr(0, nPos);
vec.push_back(temp);
s = s.substr(nPos+1);
nPos = s.find(delim.c_str());
vec.push_back(s);
for(string ele: vec)
cout<<ele<<" ";
上面代码的逻辑:
通过find找到分隔符的位置,然后将分割后的元素挨个存入vector中,得到的就是所需要的结果。
2.regex正则匹配
在c++11中引入了regex模块,通过regex模块我们也可以很方便实现split功能。
void run5()
string s = "aa bb cc dd";
regex pattern("\\\\s+");
vector<string> vec(sregex_token_iterator(s.begin(), s.end(), pattern, -1), sregex_token_iterator());
for(auto inner: vec)
cout<<inner<<endl;
上面的代码,也可以顺利实现split功能。而且相比find方法,regex的表达方式更为灵活多变。
以上是关于c++分割字符串split方法实现的主要内容,如果未能解决你的问题,请参考以下文章