ブーストと正規表現を使用して文字列内のキーと値のペアを抽出するユーティリティの開発を計画しています。
サンプル入力文字列は次のようになります
旅行:1.5、自動車保険:3.25
抽出後は次のようになります
旅行 1.5
自動車保険 3.25
次のコードがありますが、どういうわけかこれは期待どおりに機能していないようです
std::map<std::string, std::string> pairs;
boost::regex re("(?:(.*?):(.*?),)*(?:(.*?):(.*?))$"); // key - value pair
// read lines from stdin; populate map
boost::sregex_iterator it(str.begin(), str.end(), re), end;
for ( ; it != end; ++it){
pairs[(*it)[1]] = (*it)[2];
}