Parsing key/value pairs from a string in C++

前端 未结 2 384
情书的邮戳
情书的邮戳 2021-01-20 23:31

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

2条回答
  •  没有蜡笔的小新
    2021-01-21 00:02

    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

提交回复
热议问题