LibConfig++ lists auslesen

11/13/2012 01:34 マルコ#1
Hey,

ich habe ein kleines Problem. Ich benutze LibConfig (C++ Variante), um ein Config File einzulesen. In dem Config File gibt es Lists. Leider finde ich keine Möglichkeit, diese anzusprechen, um sie nachher mit einer foreach-Schleife durchzuarbeiten.

Eine List im Config File kann z.B. so aussehen:
Code:
inventory =
{
  books = ( { title  = "Treasure Island";
              author = "Robert Louis Stevenson";
              price  = 29.99;
              qty    = 5; },
            { title  = "Snow Crash";
              author = "Neal Stephenson";
              price  = 9.99;
              qty    = 8; }
          );
};
In diesem Beispiel würde ich gerne ['inventory']['books'] zurück bekommen und die Liste auslesen.
In den Beispielen ist nur beschrieben, wie ich neue Einträge zur Liste hinzufüge.
11/13/2012 17:24 Nightblizard#2
Kenne die Lib nicht, aber in der Doku steht doch wie das geht.

Gegeben ist [Only registered and activated users can see links. Click Here To Register...]. Ganz oben findest du die Liste "window". In der Doku wird das wie folgt angesprochen:

Code:
long width = config.lookup("application.window.size.w");
Oder mit überladenen [] Operator:

Code:
Settings& settings = config.lookup("application.window");
const char* title = settings["title"];
Ziemlich straight forward.
11/13/2012 20:59 マルコ#3
nja. Window ist eine Group. Und hat lauter einzelne Parameter drin. Ich weiß nicht, wie das mit dem von mir geposteten Beispiel funktionieren soll.
Code:
config.lookup("inventory.books.title")
ist nämlich absolut nicht eindeutig!
11/13/2012 21:33 Nightblizard#4
Achso, das ist imr vorhin gar nicht aufgefallen, dass das mehrere Einträge hat.
Aber auch das ist im operator [] Teil beschrieben.
Code:
Settings& settings = config.lookup("inventory.books");
const char* title = settings[0]["title"];
Das dürfte es sein.
11/13/2012 22:30 マルコ#5
Ich probiers morgen mal aus.

EDIT: Joa, es funzt! Scheint, als ob ich das irgendwo übersehen hätte^^

Vielen Dank!