साथ INI फ़ाइल पार्स करने के लिए कैसे मैं जो की तरह कुछ नमूना मान हैं एक INI फ़ाइल है: मैं इन मूल्यों को लोड और उन्हें बूस्ट के साथ अपने आवेदन में मुद्रित करने के लिए कोशिश कर रहा हूँबूस्ट
[Section1]
Value1 = 10
Value2 = a_text_string
लेकिन मुझे नहीं पता समझें कि सी ++ में ऐसा कैसे करें।
मैंने कुछ उदाहरण खोजने के लिए इस मंच में खोज की है (मैं हमेशा सी का उपयोग करता हूं और इसलिए मैं सी ++ में बहुत अच्छा नहीं हूं) लेकिन मुझे केवल फाइलों से मूल्यों को पढ़ने के तरीके के बारे में केवल उदाहरण मिलते हैं।
मुझे string = Section1.Value2
की तरह, मुझे केवल एक ही मूल्य लोड करने की आवश्यकता है क्योंकि मुझे सभी मानों को पढ़ने की आवश्यकता नहीं है, लेकिन उनमें से कुछ ही हैं।
मैं एकल मान लोड करना चाहता हूं और उन्हें अपने आवेदन में इच्छित होने पर उन्हें उपयोग करने के लिए चर में स्टोर करना चाहता हूं।
बूस्ट के साथ ऐसा करना संभव है?
पल में, मैं इस कोड का उपयोग कर रहा हूँ:
#include <iostream>
#include <string>
#include <set>
#include <sstream>
#include <exception>
#include <fstream>
#include <boost/config.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
namespace pod = boost::program_options::detail;
int main()
{
std::ifstream s("file.ini");
if(!s)
{
std::cerr<<"error"<<std::endl;
return 1;
}
std::set<std::string> options;
options.insert("Test.a");
options.insert("Test.b");
options.insert("Test.c");
for (boost::program_options::detail::config_file_iterator i(s, options), e ; i != e; ++i)
std::cout << i->value[0] << std::endl;
}
लेकिन यह सिर्फ एक for
पाश में सभी मूल्यों को पढ़ने; इसके विपरीत मैं केवल वही मान पढ़ना चाहता हूं जब मैं चाहता हूं और मुझे फ़ाइल में मान डालने की आवश्यकता नहीं है, क्योंकि यह मेरे प्रोग्राम में आवश्यक सभी मानों के साथ पहले ही लिखा गया है।
शानदार उत्तर! मुझे अपने आवेदन के लिए यही चाहिए। वास्तव में बहुत बहुत धन्यवाद! –
क्या होगा यदि मुझे उपलब्ध कुंजी के कुछ सेट नहीं पता हैं, लेकिन मैं अभी भी कुंजी = मूल्य जोड़े की पूरी सूची प्राप्त करना चाहता हूं? अर्थात। "section1.Value1" और "section1.Value2" स्थिरांक का उपयोग किए बिना आप अपने प्रोग्राम को फिर से लिखेंगे? – javapowered
अपडेट: मुझे यह प्रश्न मिला है http://stackoverflow.com/questions/11065938/boost-program-options-get-all-entries-in-section इसके अनुसार कस्टम कोड लिखने के बिना संभव नहीं है ... – javapowered