我正在尝试使用 Boost Spirit将字符串转换"ABC10DEF20"
为数组。["ABC", 10, "DEF", 20]
我不确定“未定界”是否是正确的术语,但我想通过整数和非整数的边界来分解它,而不是用空格或其他定界字符来分割它。
我想出了如下代码:
std::string search_str = "ABC10DEF20";
std::vector<boost::variant<std::string, unsigned int> > v;
std::string::const_iterator iter = search_str.begin();
std::string::const_iterator last = search_str.end();
bool r = parse(iter, last,
+(+(char_ - digit)|uint_),
v);
对于输入"ABC10DEF20"
,这会导致[ 65, 66, 67, 10, 68, 69, 70, 20 ]
(没有字符串,只有字符串部分的整数和 ASCII 组件存储在整数中)。对于"10"
我[ 10 ]
按预期得到的输入。