gpt4 book ai didi

c++ - 按 ',' 拆分字符串,但使用 boost::split 忽略字符串 C++ 中引号内的文本

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:07 28 4
gpt4 key购买 nike

使用 ',' 拆分字符串,但忽略字符串中引号内的文本 C++ 使用 boost::split

示例字符串:"1,a,2,5,"1,2",5"

我希望将其分成不同的字符串,如下所示,

String s1 = "1";
String s2 = "a";
String s3 = "2";
String s4 = "5";
String s5 = "1,2";
String s6 = "5";

我可以使用 boost::split 实现吗?

提前致谢!

最佳答案

我不确定你为什么要特别使用 boost::split,但既然你已经在使用 Boost,为什么不呢 Boost.Spirit ?这是使用 Spirit X3 的快速实现:

std::vector<std::string> csvish_split(std::string const& s)
{
namespace x3 = boost::spirit::x3;

auto const quoted = '"' >> *~x3::char_('"') >> '"';
auto const unquoted = *~x3::char_(',');
auto const segments = (quoted | unquoted) % ',';

std::vector<std::string> ret;
if (!x3::parse(cbegin(s), cend(s), segments, ret))
throw std::runtime_error("failed to parse: " + s);
return ret;
}

Online Demo

如果需要,可以使用 Boost.Spirit.QI 轻松重写。

关于c++ - 按 ',' 拆分字符串,但使用 boost::split 忽略字符串 C++ 中引号内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653318/

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