C++ के लिए CLI फ्रेमवर्क: cppcli — शक्तिशाली कंसोल एप्लिकेशन बनाना
C++ में कंसोल इंटरफेस (CLI) विकसित करने में अक्सर मैन्युअल रूप से आर्गुमेंट पार्स करना, फ्लैग को संभालना और कमांड को व्यवस्थित करना पड़ता है। cppcli लाइब्रेरी पेशेवर CLI एप्लिकेशन बनाने के लिए एक तैयार फ्रेमवर्क प्रदान करती है। यह आपको इनपुट-आउटपुट इंफ्रास्ट्रक्चर के बजाय बिजनेस लॉजिक पर ध्यान केंद्रित करने की अनुमति देती है। इस लेख में, हम cppcli की प्रमुख विशेषताओं पर चर्चा करेंगे, कोड उदाहरण देंगे और दिखाएंगे कि इसे अपने प्रोजेक्ट में कैसे एकीकृत करें।
cppcli की मुख्य विशेषताएं
- कमांड की घोषणात्मक परिभाषा — प्रत्येक कमांड को एक अलग क्लास या लैम्ब्डा फंक्शन के रूप में वर्णित किया जाता है।
- स्वचालित आर्गुमेंट पार्सिंग — पोजीशनल, नामित आर्गुमेंट और फ्लैग के लिए समर्थन।
- रंगीन आउटपुट और फॉर्मेटिंग — स्टाइल्ड आउटपुट (ANSI रंग, टेबल, प्रोग्रेस बार) के लिए अंतर्निहित उपयोगिताएँ।
- सत्यापन और सहायता — स्वचालित रूप से help संदेश उत्पन्न करना और अनिवार्य आर्गुमेंट की जाँच करना।
- विस्तारशीलता — कस्टम आर्गुमेंट प्रकार और middleware के लिए समर्थन।
त्वरित शुरुआत: स्थापना और पहला उदाहरण
cppcli एक header-only लाइब्रेरी के रूप में वितरित की जाती है। स्थापित करने के लिए, रिपॉजिटरी को क्लोन करें या CMake FetchContent का उपयोग करें। प्रोजेक्ट में शामिल करना:
#include <cppcli/cli.h>#include <iostream>
int main(int argc, char* argv[]) { cppcli::App app("मेरा एप्लिकेशन", "1.0.0"); app.run(argc, argv); return 0;}यह न्यूनतम ढांचा है। अब हम एक greet कमांड जोड़ेंगे जो उपयोगकर्ता का नाम लेती है।
उदाहरण: आर्गुमेंट वाला कमांड
#include <cppcli/cli.h>
int main(int argc, char* argv[]) { cppcli::App app("Greeter", "1.0.0");
app.command("greet", "उपयोगकर्ता का अभिवादन करता है") .argument<std::string>("name", "उपयोगकर्ता का नाम") .action([](const cppcli::Args& args) { std::string name = args.get<std::string>("name"); std::cout << "नमस्ते, " << name << "!"; });
app.run(argc, argv); return 0;}रन करें: ./app greet इवान आउटपुट देगा नमस्ते, इवान!। यदि आर्गुमेंट निर्दिष्ट नहीं है, तो cppcli एक त्रुटि और सहायता प्रदर्शित करेगा।
फ्लैग और वैकल्पिक पैरामीटर
औपचारिक अभिवादन के लिए --formal फ्लैग जोड़ें:
app.command("greet", "उपयोगकर्ता का अभिवादन करता है") .argument<std::string>("name", "नाम") .flag("--formal", "-f", "औपचारिक अभिवादन") .action([](const cppcli::Args& args) { std::string name = args.get<std::string>("name"); bool formal = args.get<bool>("formal"); if (formal) std::cout << "नमस्ते, " << name << "!"; else std::cout << "नमस्ते, " << name << "!"; });अब ./app greet इवान --formal आउटपुट देगा नमस्ते, इवान!।
नेस्टेड कमांड और उप-कमांड
cppcli कमांड की ट्री संरचना का समर्थन करता है। उदाहरण के लिए, एक प्रोजेक्ट प्रबंधन उपयोगिता के लिए:
app.command("project", "प्रोजेक्ट प्रबंधन") .command("create", "प्रोजेक्ट बनाएं") .argument<std::string>("name", "प्रोजेक्ट का नाम") .action([](const cppcli::Args& args) { std::cout << "प्रोजेक्ट बनाया गया: " << args.get<std::string>("name") << ""; }) .command("delete", "प्रोजेक्ट हटाएं") .argument<std::string>("name", "प्रोजेक्ट का नाम") .flag("--force", "पुष्टि के बिना") .action([](const cppcli::Args& args) { // हटाने का तर्क });कॉल करें: ./app project
पुस्तकालय में भी
Kotlin में CSV के साथ कार्य: लाइब्रेरीज़, पार्सिंग और डेटा लेखन
Apache HttpClient Java: पूर्ण गाइड उदाहरणों के साथ
Kotlin कार्य अनुसूचक: kotlinx-coroutines-core और korGE लाइब्रेरी
PHP में Kafka के साथ काम करना: लाइब्रेरीज़, इंस्टॉलेशन और कोड उदाहरण
Go (Golang) में Excel के साथ काम करें: exelize और tealeg/xlsx लाइब्रेरी