I\'m working in C++11, no Boost. I have a function that takes as input a std::string that contains a series of key-value pairs, delimited with semicolons, and returns an object
For an easy readable solution, you can e.g. use std::regex_token_iterator and a sorted container to distinguish the attribute value pairs (alternatively use an unsorted container and std::sort
).
std::regex r{R"([^;]+;)"};
std::set tokens{std::sregex_token_iterator{std::begin(s), std::end(s), r}, std::sregex_token_iterator{}};
Now the attribute value strings are sorted lexicographically in the set tokens
, i.e. the first is Bottom
, then Name
and last Top
.
Lastly use a simple std::string::find
and std::string::substr
to extract the desired parts of the string.
Live example