2011-12-15 5 views
3

C++を使用してPerlのYAML::TinyからYAMLファイルの出力を解析しようとしています。 C++ & YAML初心者のために、私はHowToParseADocumentを出発点として使用しています。C++とPerlの間で使用されるYAML

monsters.yamlファイルは、YAML::Tinyを使用して作成した場合のように、見えます:私は、それぞれのセパレータとして---で変性しYAMLファイルを読み込むことHowToParseADocumentで例をモーフィングのヘルプを探しています

--- 
name: Ogre 
position: [0, 5, 0] 
powers: 
    - name: Club 
    damage: 10 
    - name: Fist 
    damage: 8 
--- 
name: Dragon 
position: [1, 0, 10] 
powers: 
    - name: Fire Breath 
    damage: 25 
    - name: Claws 
    damage: 15 
--- 
name: Wizard 
position: [5, -3, 0] 
powers: 
    - name: Acid Rain 
    damage: 50 
    - name: Staff 
    damage: 3 

エントリ。私は以下のC++メインコードを再現しました。

int main() 
{ 
    std::ifstream fin("monsters.yaml"); 
    YAML::Parser parser(fin); 
    YAML::Node doc; 
    parser.GetNextDocument(doc); 
    for(unsigned i=0;i<doc.size();i++) { 
     Monster monster; 
     doc[i] >> monster; 
     std::cout << monster.name << "\n"; 
    } 

    return 0; 
} 

答えて

4

複数の文書(例のように、配列からなる単一の文書ではなく)にYAMLファイルを分割---セパレータ。

あなたはこのようにそれを解析することができます:

int main() 
{ 
    std::ifstream fin("monsters.yaml"); 
    YAML::Parser parser(fin); 
    YAML::Node doc; 
    while(parser.GetNextDocument(doc)) { 
     Monster monster; 
     doc >> monster; 
     std::cout << monster.name << "\n"; 
    } 

    return 0; 
} 
+0

グレート!どうもありがとう。できます。 – jim

関連する問題