Boost Spiritを使ってstring like"ABC10DEF20"
をarrayに変換しようとしています。["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 ]