2010-12-22 11 views
8

In einer Konfiguration wie unten; Gibt es eine Möglichkeit, einzelne Abschnitte zu bearbeiten?boost :: program_options - wie man mehrere Abschnitte mit demselben Namen in der INI-Datei behandelt

Ich bin auf der Suche nach einer Möglichkeit, einzelne "Server" Abschnitte unten auf zuverlässige Weise zu validieren.

[basic] 
number_of_servers=3 

[server] 
ip=10.20.30.40 
password=sdfslkhf  

[server] 
ip=10.20.30.41 
password=sdfslkhf 

[server] 
ip=10.20.30.42 
password=sdfslkhf 

[server] 
password=sdfslkhf 

[server] 
ip=10.20.30.42 

Antwort

13

Wenn boost::program_options mit müssen eine INI-Datei, die Option Namen analysieren durch ihre einschließenden Abschnitt Namen vorangestellt werden.

Mit anderen Worten, Abschnitte sind Teil der Option ‚Bezeichner‘, aber ich glaube nicht, dass Sie eine Möglichkeit haben, die Abschnitt ein gegebener server.ip Variable gehört (und damit, welche den zugeordnete server.password) zu identifizieren .

Ich denke, Sie sollten Boost.PropertyTree (die auch INI-Datei-Parsing unterstützt) für diese Aufgabe in Betracht ziehen.

+0

+1 für Boost.PropertyTree –

+4

+1 für das Vorschlagen Boost.PropertyTree –

2

Von here:

Die Optionsnamen sind relativ zu den Abschnittsnamen, so dass die folgende Konfigurationsdatei Teil:

[gui.accessibility] 
    visual_bell=yes 

entspricht

gui.accessibility.visual_bell=yes 

Aber es gibt derzeit keine Möglichkeit, Abschnitte mit dem gleichen Namen zu unterscheiden.

UPDATE:

Qt QSettings Normalerweise löst, indem Werte postfixing aus einem Array mit "/ n" (Abschnitte?). So könnten Sie verwenden:

[server/0] 
... 
[server/1] 
... 
[server/2] 
... 
Verwandte Themen