我有一個測試yaml文件,我試圖用yaml-cpp解析。困惑於YAML :: NodeType ::未定義與yaml-cpp
test.yaml
testConfig:
# this points to additional config files to be parsed
includes:
required: "thing1.yaml"
optional: "thing2.yaml"
#some extraneous config information
foo: 42
bar: 394
baz: 8675309
我解析它,我得到的回報testConfig.Type()
YAML::NodeType::Map
。這是預期的行爲。
然後,我嘗試解析包含以獲取必需值或可選值,我無法迭代,因爲includes.Type()
返回YAML::NodeType::Undefined
。我對yaml和yaml-cpp非常陌生,所以任何幫助向我展示我出錯的地方將不勝感激。
解析代碼:
{includes and other such nonsense}
.
.
.
YAML::Node configRoot = YAML::LoadFile(path.c_str());
if(configRoot.IsNull())
{
SYSTEM_LOG_ERROR("Failed to load the config file: %s.",
path.c_str());
return false;
}
YAML::Node includes = configRoot["includes"];
/* ^^^^^^^^^^^^^^^
* I believe that here lies the issue as includes is undefined and
* therefore I cannot iterate over it.
*/
for(auto it = include.begin(); it != include.end(); ++it)
{
// do some fantastically brilliant CS voodoo!
}
.
.
.
{ more C++ craziness to follow }
SOLUTION: 我除去不必要的頂層configTest
這樣我可以解析包括如我需要。
沒有必要在你的YAML文件中加入引用'thingX.yaml' – Anthon
@安永謝謝你的信息...我習慣了json,似乎幾乎所有東西都需要引號。 – CompSciGuy139