计划开发一个使用 boost 和 regex 来提取字符串中的键值对的实用程序。
示例输入字符串可能如下
旅行: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];
}