gpt4 book ai didi

c++ - boost::spirit::position_iterator2 的奇怪错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:17 26 4
gpt4 key购买 nike

所以我想做的是解析一个字符串列表:

namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;

std::string TEST = "aa\nbbbb\nccc\n";

std::istringstream INPUT (TEST);
std::noskipws(INPUT);

typedef std::istreambuf_iterator<char> base_iterator;
typedef boost::spirit::multi_pass<base_iterator> multi_pass_iter;
typedef boost::spirit::classic::position_iterator2<multi_pass_iter> pos_iterator;

base_iterator base_begin(INPUT);

multi_pass_iter first = boost::spirit::make_default_multi_pass(base_begin);
multi_pass_iter last;

pos_iterator pfirst(first,last,std::string("DD"));
pos_iterator plast;

using qi::lexeme;
using ascii::alpha;

std::vector<std::string> DDD;
bool res = qi::phrase_parse(pfirst,plast,* lexeme[+alpha],ascii::space,DDD);

for (const auto & d : DDD) std::cout << d << " (" << d.size() << ")" << std::endl;

我在 DDD 中得到的是 3 个大小正确的字符串,但都是空格。

如果我改用

bool res = qi::phrase_parse(first,last,* lexeme[+alpha],ascii::space,DDD);

一切正常。我过去使用 position_iterator2 没有任何问题,所以我不认为这是一个错误。我错过了什么吗?

最佳答案

我认为这是 a Spirit bug .如果您查看 ticket 的底部你会找到一个补丁,我相信可以修复它。

关于c++ - boost::spirit::position_iterator2 的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14005273/

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