2010-12-22 12 views
8

में एक ही नाम के साथ एकाधिक अनुभागों को कैसे प्रबंधित करें नीचे की तरह एक कॉन्फ़िगरेशन में; अलग-अलग वर्गों को संभालने का कोई तरीका है।boost :: program_options - आईएनआई फ़ाइल

मैं विश्वसनीय तरीके से नीचे "व्यक्तिगत" अनुभागों को सत्यापित करने का एक तरीका ढूंढ रहा हूं।

[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 

उत्तर

13

जब boost::program_options का उपयोग कर एक INI फ़ाइल पार्स करने के लिए, विकल्प के नाम उनके संलग्नित अनुभाग के नाम से उपसर्ग होना चाहिए।

दूसरे शब्दों में, वर्गों विकल्प 'पहचानकर्ता' का हिस्सा हैं, लेकिन मुझे नहीं लगता कि आप जो खंड एक दिया server.ip चर अंतर्गत आता है करने के लिए की पहचान के लिए एक रास्ता है (और इस प्रकार है, जो जुड़ा हुआ है server.password) ।

मुझे लगता है कि आपको इस कार्य के लिए Boost.PropertyTree (जो आईएनआई फ़ाइल पार्सिंग का भी समर्थन करता है) पर विचार करना चाहिए।

+0

+1 Boost.PropertyTree सुझाव देने के लिए –

+4

+1

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

2
here से

:

विकल्प नाम अनुभाग के नाम के सापेक्ष हैं, तो निम्नलिखित विन्यास फाइल हिस्सा:

[gui.accessibility] 
    visual_bell=yes 

gui.accessibility.visual_bell=yes 

के बराबर है लेकिन कोई वहाँ वर्तमान में है समान नाम वाले अनुभागों को अलग करने का तरीका।

अद्यतन:

क्यूटी के QSettings आमतौर पर के साथ "/ n" एक सरणी से postfixing मूल्यों से इस को हल करती है (वर्गों?)। तो अगर आप इस्तेमाल कर सकते हैं:

Boost.PropertyTree
संबंधित मुद्दे