C++ के लिए CLI फ्रेमवर्क: कंसोल एप्लिकेशन जल्दी और आसानी से लिखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ के लिए CLI फ्रेमवर्क: कंसोल एप्लिकेशन जल्दी और आसानी से लिखें

\n\n

C++ में डेवलपमेंट का एक महत्वपूर्ण हिस्सा एक गुणवत्तापूर्ण कमांड लाइन इंटरफ़ेस (CLI) बनाना है। argc/argv और getopt के माध्यम से मैन्युअल रूप से आर्गुमेंट पार्स करना जल्दी ही बोझिल और त्रुटि-प्रवण हो जाता है, खासकर जब बड़ी संख्या में विकल्प हों। विशेष लाइब्रेरी - CLI फ्रेमवर्क - बचाव में आते हैं। वे पार्सिंग, हेल्प जनरेशन, टाइप चेकिंग को स्वचालित करते हैं और अधिक स्वच्छ और रखरखाव योग्य कोड लिखने में मदद करते हैं।

\n\n

इस लेख में, हम C++ के लिए तीन सबसे लोकप्रिय और आधुनिक CLI फ्रेमवर्क पर विचार करेंगे: CLI11, cxxopts और argparse। आप उनकी ताकत जानेंगे, कोड उदाहरण देखेंगे और अपने प्रोजेक्ट के लिए उपयुक्त टूल चुनने में सक्षम होंगे।

\n\n

1. CLI11 - आधुनिक मानक

\n\n

CLI11 एक header-only लाइब्रेरी है जिसे C++11 और उससे नए संस्करणों के लिए सबसे अच्छे समाधानों में से एक माना जाता है। यह सहज ज्ञान युक्त API, शक्तिशाली वैलिडेशन और स्वचालित हेल्प जनरेशन प्रदान करता है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • Header-only: बिल्ड की आवश्यकता नहीं - बस हेडर फ़ाइल शामिल करें।
  • \n
  • स्वचालित हेल्प: फ़्लैग -h और --help तुरंत काम करते हैं।
  • \n
  • वैलिडेशन: आर्गुमेंट के लिए बिल्ट-इन और कस्टम वैलिडेटर (रेंज, रेगुलर एक्सप्रेशन, फ़ाइल अस्तित्व)।
  • \n
  • सबकमांड सपोर्ट: जटिल उपयोगिताओं के लिए आदर्श (git या docker की तरह)।
  • \n
  • फ़ॉर्मेटिंग: अनुकूलन योग्य हेल्प आउटपुट।
  • \n
\n\n

CLI11 का उपयोग उदाहरण:

\n

एक सरल एप्लिकेशन जो नाम और एक वैकल्पिक अभिवादन फ़्लैग लेता है:

\n
#include <CLI/CLI.hpp>\n#include <iostream>\n\nint main(int argc, char** argv) {\n    CLI::App app{"CLI11 का प्रदर्शन"};\n\n    std::string name;\n    bool greet = false;\n\n    app.add_option("-n,--name", name, "आपका नाम")->required();\n    app.add_flag("-g,--greet", greet, "अभिवादन प्रदर्शित करें");\n\n    CLI11_PARSE(app, argc, argv);\n\n    std::cout << "नमस्ते, " << name << "!" << std::endl;\n    if (greet) {\n        std::cout << "आपका दिन शुभ हो!" << std::endl;\n    }\n    return 0;\n}
\n

यह कैसे काम करता है: लाइब्रेरी स्वयं आर्गुमेंट पार्स करती है, --name विकल्प की अनिवार्यता की जाँच करती है और ./app --help कॉल करने पर हेल्प जनरेट करती है।

\n\n

2. cxxopts - सरलता और हल्कापन

\n\n

cxxopts एक और header-only लाइब्रेरी है जो न्यूनतमता और सरलता पर केंद्रित है। यह छोटी उपयोगिताओं के लिए उपयुक्त है जहाँ सबकमांड की आवश्यकता नहीं है, लेकिन कोड की पठनीयता महत्वपूर्ण है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • सरल API: कॉल चेन के माध्यम से विकल्प जोड़ना।
  • \n
  • स्वचालित टाइप रूपांतरण: int, double, string और अन्य।
  • \n
  • पोजीशनल आर्गुमेंट सपोर्ट।
  • \n
  • अनुकूलन योग्य प्रीफ़िक्स: - या -- का उपयोग किया जा सकता है।
  • \n
\n\n

cxxopts का उपयोग उदाहरण:

\n
#include <cxxopts.hpp>\n#include <iostream>\n\nint main(int argc, char** argv) {\n    cxxopts::Options options("myapp", "cxxopts का उदाहरण");\n\n    options.add_options()\n        ("f,file", "फ़ाइल का नाम", cxxopts::value<std::string>())\n        ("v,verbose", "विस्तृत आउटपुट", cxxopts::value<bool>()->default_value("false"))\n        ("h,help", "हेल्प दिखाएं");\n\n    auto result = options.parse(argc, argv);\n\n    if (result.count("help")) {\n        std::cout << options.help() << std::endl;\n                    

अनुशंसाएँ