c++在多个子字符串上拆分字符串
C++ split string on multiple substrings
在c++中,我想做一些类似的事情:
分割子字符串
然而,我想指定多个子字符串来分割。例如,我想将字符串"fda+hifoolkjba4"的"+","foo","ba"拆分为"fda","hi","lkj","4"的向量。有什么建议吗?最好是在STL和Boost中(如果可以避免的话,我宁愿不合并Qt框架或其他库)。我会使用正则表达式,从<regex>
或<boost/regex.hpp>
;您需要的正则表达式可能类似于(.*?)(+|foo|ba)
(加上最后的令牌)。
下面是一个使用Boost的简化示例:
std::string str(argv[1]);
boost::regex r("(.*?)(\+|foo|ba)");
boost::sregex_iterator rt(str.begin(), str.end(), r), rend;
std::string final;
for ( ; rt != rend; ++rt)
{
std::cout << (*rt)[1] << std::endl;
final = rt->suffix();
}
std::cout << final << std::endl;
建议在boost中使用正则表达式支持。请看这里的例子。
下面是一个可以拆分字符串的示例代码:#include <iostream>
#include <boost/regex.hpp>
using namespace std;
int main()
{
boost::regex re("(\+|foo|ba)");
std::string s("fda+hifoolkjba4");
boost::sregex_token_iterator i(s.begin(), s.end(), re, -1);
boost::sregex_token_iterator j;
while (i != j) {
std::cout << *i++ << " ";
}
std::cout << std::endl;
return 0;
}
相关文章:
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 将字符串拆分为等长 c++ 的部分
- 如何使用 Boost C++ 打印第 n 个字符串拆分?
- 我在将字符串拆分为向量时遇到困难
- C++ 如何将字符串拆分为单个字符
- 是否有用于执行反向字符串拆分器的开箱即用功能?
- 如何将字符串拆分为一组 3 个字符,它们之间有空格
- 将字符串拆分为单个单词并将它们放置在向量中
- 基于其中的数字子字符串拆分字符串
- 如何在C++中将数字字符串拆分为数组
- 如何在 c++ 中将字符串拆分为字符串 2d 数组数组
- 如何将标准::字符串拆分为标准::string_views的范围 (v3)
- 将特定格式的字符串拆分为浮点数和字符串
- 在 c++ 中将字符串拆分为单独的变量
- 用C 中的4个字符将字符串拆分
- 如何用Arduino中的另一个字符串将字符串拆分
- 如何在 Main 方法之外将字符串拆分为标记
- C 将字符串按空白空间将字符串拆分,除非将其封闭在引号中并存储在向量中
- 将字符串拆分为矢量 C++
- 试图将字符串拆分为两个整数