2009-05-08 15 views
11

मेरे पास एक ऐसा एप्लिकेशन है जो इसके कॉन्फ़िगरेशन विकल्पों को संग्रहीत और प्रबंधित करने के लिए Boost.Program_options का उपयोग करता है। हम वर्तमान में कॉन्फ़िगरेशन फ़ाइलों से दूर जा रहे हैं और इसके बजाय डेटाबेस लोड कॉन्फ़िगरेशन का उपयोग कर रहे हैं। मैंने एक एपीआई लिखा है जो होस्टनाम और इंस्टेंस नाम द्वारा डेटाबेस से कॉन्फ़िगरेशन विकल्प पढ़ता है। (ठंडा!) हालांकि, जहां तक ​​मैं देख सकता हूं कि इन विकल्पों को मैन्युअल रूप से बढ़ावा देने के लिए कोई तरीका नहीं है Program_options। क्या किसी ने किसी भी विचार से पहले इसका इस्तेमाल किया है? बढ़ावा से दस्तावेज़ यह इंगित करते हैं कि उस मानचित्र में सामान प्राप्त करने का एकमात्र तरीका स्टोर फ़ंक्शन द्वारा है, जो या तो कमांड लाइन या कॉन्फ़िगरेशन फ़ाइल (जो मैं चाहता हूं) से पढ़ता हूं। मूल रूप से मानचित्र में डीबी पढ़ने मानों को मैन्युअल रूप से सम्मिलित करने का एक तरीका ढूंढ रहे हैं।आप बूस्ट.प्रोग्राम_प्शन में विकल्पों को मैन्युअल रूप से कैसे सम्मिलित करते हैं?

+0

मैं ** एक चार स्वरूपण के इस छोटे से करने का कोई अच्छा तरीका मिल गया है जैसे कि यह एक है कमांडलाइन पैरामीटर। अगर किसी को कुछ पता चलता है तो मुझे बताएं! – Alex

उत्तर

13

मेरा जवाब बहुत देर हो चुकी एक छोटे से आता है, लेकिन मैं कुछ इसी तरह करने का प्रयास कर कुछ समय बिताया और एक annoyingly स्पष्ट समाधान (बैठाना किसी और को इस की तलाश में है) ...

को याद करते हुए कि boost::program_options::variables_mapstd::map<std::string, boost::program_options::variable_value> से निकला पाया , आप एक डालने सहित पूरी तरह से कानूनी एसटीएल नक्शा प्रसंस्करण कर सकते हैं ...

 
namespace po = boost::program_options; 
po::variables_map vm; 
vm.insert(std::make_pair("MyNewEmptyOption", po::variable_value()); 
vm.insert(std::make_pair("MyNewIntOption", po::variable_value(32, false)); 
po::notify(vm); 

-Edmond-

+1

std :: मैप से प्रोग्राम_ऑप्शन विरासत में नहीं दिखता है। मैं इसे देखता हूं: abstract_variables_map। अगर यह एक पुन: इंजीनियर std :: मानचित्र अभी तक नहीं है तो जांच नहीं की है। – Alex

+0

उत्कृष्ट समाधान! – russoue

+0

@ एलेक्स, यह [दोनों] से प्राप्त होता है (http://www.boost.org/doc/libs/1_55_0/boost/program_options/variables_map.hpp)। – russoue

3

क्या आपने extra_parser या allow_unregisteredBoost::Program_Options के कार्यों को देखा है? आपके प्रोग्राम के संचालन के आधार पर, उनमें से एक या दोनों आप जो चाहते हैं उसका समर्थन करने में सक्षम होना चाहिए।

संबंधित मुद्दे