मैं एक निष्पादन योग्य (मैक, जीत पर चल रहा है, और लिनक्स)"सशर्त" कमांड लाइन तर्क की पार्स
a.out [-a] [-b] [-r -i <file> -o <file> -t <double> -n <int> ]
है जहां [ ]
में एक बहस का मतलब है कि यह वैकल्पिक है कहो। हालांकि, अगर अंतिम तर्क -r
सेट किया गया है तो -i
, -o
, -t
, और -n
भी आपूर्ति की जानी चाहिए।
कमांड लाइन तर्कों को पार्स करने के लिए वहां बहुत सी अच्छी सी ++ - पुस्तकालय हैं, उदा। gflags (http://code.google.com/p/gflags/), tclap (http://tclap.sourceforge.net/), simpleopt (http://code.jellycan.com/simpleopt/), boost.program_options (http://www.boost.org/doc/libs/1_52_0/doc/html/program_options.html), आदि लेकिन मैंने सोचा अगर वहाँ भी मुझे बहस के बीच इन सशर्त रिश्तों सीधे सांकेतिक शब्दों में बदलना, डब्ल्यू करने देता है/ओ मैन्युअल
से निपटने त्रुटि कोडिंगif (argR.isSet() && (! argI.isSet() || ! argO.isSet() || ...)) ...
और मैन्युअल रूप से --help
सेट अप करना।
लाइब्रेरी tclap एक्सओआर तर्कों की अनुमति देता है, उदा। या तो -a
या -b
की अनुमति है लेकिन दोनों नहीं। तो, उस शब्दावली में एक और तर्क के लिए अच्छा होगा।
क्या कोई भी बहुमुखी, हल्के वजन और क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी को जानता है जो ऐसा कर सकता है?
[यहां] (http://www.boost.org/libs/program_options/example/real.cpp) Boost.Program_options का उदाहरण है जो विवादित और आश्रित विकल्पों से संबंधित है। –