次のような文字列があります。
"\r color=\"red\" name=\"Jon\" \t\n depth=\"8.26\""
std::list
そして、この文字列を解析して、このオブジェクトのを作成したいと思います:
class data
{
std::string name;
std::string value;
};
たとえば、次のようになります。
name = color
value = red
最速の方法は何ですか?ブースト使えます。
編集:
これは私が試したことです:
vector<string> tokens;
split(tokens, str, is_any_of(" \t\f\v\n\r"));
if(tokens.size() > 1)
{
list<data> attr;
for_each(tokens.begin(), tokens.end(), [&attr](const string& token)
{
if(token.empty() || !contains(token, "="))
return;
vector<string> tokens;
split(tokens, token, is_any_of("="));
erase_all(tokens[1], "\"");
attr.push_back(data(tokens[0], tokens[1]));
}
);
}
" "
ただし、 : likeの中にスペースがある場合は機能しませんcolor="red 1"
。