2016-04-24 57 views
1

我有這樣的:如何使用YAML-cpp查找關鍵值和值?

YAML::Node doc = YAML::LoadFile(ruta); 

for (YAML::const_iterator it = doc.begin(); it != doc.end(); ++it) { 
     string key= it->first.as<string>(); 
     string array= it->second.as<string>(); 
} 

我必須跟string array= it->second.as<string>();

當我運行下面的代碼,一切是正確的問題,

YAML::Node doc = YAML::LoadFile(ruta); 

for (YAML::const_iterator it = doc.begin(); it != doc.end(); ++it) { 
     string key= it->first.as<string>(); 
} 

但是當我運行:

YAML::Node doc = YAML::LoadFile(ruta) 

for (YAML::const_iterator it = doc.begin(); it != doc.end(); ++it) { 
     string key= it->first.as<string>(); 
     string array= it->second.as<string>(); 
} 

在終端apear中出現這個錯誤:

terminate called after throwing an instance of 'YAML::TypedBadConversion<int>' 
    what(): yaml-cpp: error at line 8, column 8: bad conversion 
Abortado (`core' generado) 

我需要幫助,因爲我不知道爲什麼它不幹活認爲,因爲如果我用array = it->second它的工作,但我需要轉換爲字符串埃羅它關係到array = it->second.as<string>();

回答

0

yaml-cpp報告說您無法將您的鍵/值對的值轉換爲std::string。你知道它應該是什麼類型?你的變量名爲array,這表明你認爲它是一個序列。如果是這樣,你可以寫:

YAML::Node array = it->second; 
for (YAML::const_iterator it = array.begin(); it != array.end(); ++it) { 
    YAML::Node entry = *it; 
    // do something with entry 
} 
+0

我不唐已瞭解:對(YAML ::節點條目:數組){// 做入門 東西} – seny

+0

@seny這是一個遠程for循環(HTTP:/ /en.cppreference.com/w/cpp/language/range-for)。如果你喜歡這種方式,我用迭代器循環替換它。 –