boost::regex に問題があります。この解決策は、各一致で 1 つの結果に対してのみ機能します
boost::regex regex("id=\"(.*?)\""); // should I use this "id=\"(.*?)\"(.*?)<value>(.*?)</value>"?
boost::sregex_token_iterator iter(xml.begin(), xml.end(), regex, 1); // 1 because I just need text inside quotes
boost::sregex_token_iterator end;
そして今解析された文字列
<x id="first">
<value>5</value>
</x>
<x id="second">
<value>56</value>
</x>
etc...
ここで問題は、ID と値を一度に解析して、マッチ ループ内で両方を取得する方法です。
for( ; iter != end; ++iter ) {
std::string id(iter->first, iter->second);
std::string value(?????);
}