2016-09-21 3 views
0

Ich versuche, die folgende config.yaml-Datei zu analysieren.yams-cpp verschachtelte Sequenz Rückgabe der Karte anstelle von Wert

config.yaml

foo: 
    bar: 
    baz: [1, 2, 3, 4] 
    bam: "some_string_value" 

test.cpp

YAML::Node configObj = YAML::LoadFile("cfig.yaml"); // loads file just fine 

YAML::Node fooObj = configObj["foo"]; // this Node object is a Map 

// iterate over foo node to get bar node 
for(auto it = fooObj.begin(); it != fooObj.end(); ++it){ 
    YAML::Node barMap = it->second; // this Node object is a Map 

    // iterate over bar node to get bad node 
    for(auto i = barMap.begin(); i != barMap.end(); ++i){ 
     YAML::Node bazMap = i->second; // this node is a sequence 

     for(std::size_t i=0; i<bazMap.size(); i++   
      auto index = bazMap[i].as<int>(); // <<< This is the problem 
     } 
    } 
} 

Das Problem, soweit ich sehen kann, ist, dass ich Index ein int zu sein, aber bazMap[i].as<int>() ich erwarte erwarte ich 1 die erste Schleife ist, 2 der zweite usw. Was ich stattdessen bekomme, ist bazMap[i].as<int>() ist vom Typ map. Was vermisse ich hier in meinem Verständnis?

Danke,

Bruce

aktualisieren Die Antwort war, dass ich für Schleifen am Anfang meiner verschachtelt gestoppt.

+1

Haben Sie das gelöst? Wenn ja, können Sie unten eine Antwort schreiben und sie als "akzeptiert" markieren. –

+0

Sorry, ich war im Urlaub. Ich habe und ich werde. Vielen Dank! – CompSciGuy139

Antwort

0

Die Antwort, die ich fand, liegt darin, dass ich nicht wusste, was ich bekam.

In der config.yaml Datei Ich hatte erwartet, die folgenden:

foo.Type() == Map 
bar.Type() == Sequence 
baz.Type() == Sequence 

aber, was ich immer war:

foo.Type() == Map 
bar.Type() == Map 
baz.Type() == Sequence 

alles, was ich tun musste, um dieses Problem zu lösen, war die Config-Datei zu ändern .

foo: 
    bar: 
    - baz: [1, 2, 3, 4] 
    - bam: "some_string_value" 

Dann analysiert es genau wie ich erwartet hatte.

Das Problem war also das Format der Konfigurationsdatei und nicht in der Parsing-Logik.

Verwandte Themen