سؤال

ولدي تطبيق يستخدم Boost.Program_options لتخزين وإدارة خيارات التكوين الخاص بها. نحن نتحرك حاليا بعيدا عن ملفات التكوين واستخدام تكوين قاعدة بيانات تحميلها بدلا من ذلك. لقد كتبت على API الذي يقرأ خيارات التكوين من قاعدة البيانات عن طريق اسم المضيف واسم المثيل. (باردة!) ومع ذلك، بقدر ما أستطيع أن أرى لا توجد وسيلة لادخال هذه الخيارات في Program_options دفعة يدويا. وقد أي شخص يستخدم هذا من قبل، أي أفكار؟ يبدو أن مستندات من دفعة للإشارة إلى الطريقة الوحيدة للحصول على الاشياء في تلك الخريطة هي عن طريق وظيفة الحفظ، التي إما يقرأ من سطر الأوامر أو ملف التكوين (وليس ما أريد). أبحث في الأساس عن وسيلة لإدراج DB يدويا قراءة القيم في إلى الخريطة.

هل كانت مفيدة؟

المحلول

وجوابي يأتي في وقت متأخر قليلا جدا، ولكن قضيت بعض الوقت في محاولة لفعل شيء مماثل وجدت حل واضح مزعج (طارئ أي شخص آخر هو يبحث عن هذا) ...

وإذ تشير إلى أن boost::program_options::variables_map مستمد من std::map<std::string, boost::program_options::variable_value>، يمكنك أن تفعل تجهيز خريطة STL قانوني تماما بما في ذلك إدراج ...

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-

نصائح أخرى

هل نظرت إلى extra_parser أو allow_unregistered ظائف Boost::Program_Options؟ اعتمادا على بالضبط كيف يعمل البرنامج، واحد أو كليهما يجب أن تكون قادرة على دعم ما تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top