【发布时间】:2013-11-27 15:52:01
【问题描述】:
我想转一个std::string 如:
"{1, 2}, {one, two}, {123, onetwothree}"
进入std::vector 的std::pairs 的std::strings 看起来像:
std::vector<std::pair<std::string, std::string>> v = {{"1", "2"}, {"one", "two"}, {"123", "onetwothree"}};
// where, for instance
v[0] == std::make_pair("1", "2"); // etc.
这似乎是使用std::regex 最容易解析原始std::string 的情况,但我不是正则表达式专家(或新手),更不用说std::regex 专家了。对这里的食谱有什么想法吗?
【问题讨论】:
-
到目前为止你已经尝试过什么?
-
"{1, {2, 3} { {a, b} } }"呢? -
现在,我正在使用 std::string 自己的 find 方法手动执行此操作。不是正则表达式的人,这似乎是一个很好的入门案例,但我发现的示例倾向于返回单个大括号匹配的内容,而不是遍历大括号匹配的多个匹配。
-
格式方面,“{first, second}, {third, Fourth}等”比较严格。这是一个字符串对列表,如果这样更清楚的话。
-
我在stackoverflow.com/questions/13227802/… 找到的例子是正确的,但是太微不足道了。我只是不知道如何将其扩展到这个更复杂的案例。如果最好的话,我可以使用一些混合字符串/正则表达式解决方案。