gpt4 book ai didi

c++ - 在不删除的情况下将字符串拆分为具有多个分隔符的多个字符串?

转载 作者:行者123 更新时间:2023-11-27 23:12:15 27 4
gpt4 key购买 nike

我使用的是boost框架,所以它可能会有所帮助,但我还没有找到必要的功能。

对于通常的快速拆分,我可以使用:

string str = ...;
vector<string> strs;
boost::split(strs, str, boost::is_any_of("mM"));

但它删除了 m 和 M 个字符。

我也不能简单地使用正则表达式,因为它会在字符串中搜索满足定义模式的最长值。

附言有很多类似的问题,但他们只是用其他编程语言描述了这个实现。

最佳答案

未经测试,但未使用 vector<string> , 你可以试试 vector<boost::iterator_range<std::string::iterator>> (所以你得到一对迭代器到每个标记的主字符串。然后从(范围开始 -1 [只要范围开始不是主字符串的 begin()],到范围结束)迭代

编辑:这是一个例子:

#include <iostream>
#include <string>

#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/split.hpp>
#include <boost/range/iterator_range.hpp>

int main(void)
{
std::string str = "FooMBarMSFM";

std::vector<boost::iterator_range<std::string::iterator>> tokens;

boost::split(tokens, str, boost::is_any_of("mM"));

for(auto r : tokens)
{
std::string b(r.begin(), r.end());
std::cout << b << std::endl;
if (r.begin() != str.begin())
{
std::string bm(std::prev(r.begin()), r.end());
std::cout << "With token: [" << bm << "]" << std::endl;
}
}
}

关于c++ - 在不删除的情况下将字符串拆分为具有多个分隔符的多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com