我在这个 api 处理地图与序列方面遇到了相当基本的问题。假设我有以下结构:
foo_map["f1"] = "one";
foo_map["f2"] = "two";
bar_map["b1"] = "one";
bar_map["b2"] = "two";
我希望将其转换为以下 YAML 文件:
Node:
- Foo:
f1 : one
f2 : two
- Bar:
b1 : one
b2 : two
我会这样做:
node.push_back("Foo");
node["Foo"]["b1"] = "one";
...
node.push_back("Bar");
然而,在最后一行节点现在已经从序列转换为地图,我得到了一个异常。我能做到这一点的唯一方法是输出一张地图:
Node:
Foo:
f1 : one
f2 : two
Bar:
b1 : one
b2 : two
问题是如果我无法读回此类文件。如果我在 Node 上进行迭代,我什至无法在没有异常的情况下获得节点迭代器的类型。
YAML::Node::const_iterator n_it = node.begin();
for (; n_it != config.end(); n_it++) {
if (n_it->Type() == YAML::NodeType::Scalar) {
// throws exception
}
}
这应该很容易处理,但一直让我发疯!