C++ में YAML के साथ कार्य: पार्सिंग और सीरियलाइज़ेशन के लिए yaml-cpp लाइब्रेरी

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

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

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

C++ में YAML के साथ कार्य: yaml-cpp लाइब्रेरी



YAML (YAML Ain't Markup Language) एक मानव-पठनीय डेटा सीरियलाइज़ेशन प्रारूप है, जिसका उपयोग अक्सर कॉन्फ़िगरेशन फ़ाइलों, डेटा आदान-प्रदान और संरचित जानकारी के भंडारण के लिए किया जाता है। C++ में YAML के साथ काम करने के लिए एक शक्तिशाली और उपयोग में आसान लाइब्रेरी yaml-cpp मौजूद है। इस लेख में, हम विस्तार से देखेंगे कि YAML दस्तावेज़ों को पार्स करने और बनाने के लिए yaml-cpp को कैसे स्थापित, कॉन्फ़िगर और उपयोग किया जाए।



yaml-cpp की स्थापना



yaml-cpp लाइब्रेरी अधिकांश प्लेटफार्मों के लिए उपलब्ध है। इसे स्थापित करने का सबसे आसान तरीका पैकेज मैनेजर के माध्यम से है:



  • Ubuntu/Debian: sudo apt-get install libyaml-cpp-dev
  • macOS (Homebrew): brew install yaml-cpp
  • Windows (vcpkg): vcpkg install yaml-cpp


GitHub से रिपॉजिटरी डाउनलोड करके और CMake का उपयोग करके स्रोत से भी संकलित किया जा सकता है:



git clone https://github.com/jbeder/yaml-cpp.gitcd yaml-cppmkdir build && cd buildcmake ..makesudo make install


yaml-cpp के साथ मूल बातें



लाइब्रेरी YAML डेटा को लोड करने, संशोधित करने और सहेजने के लिए एक सहज API प्रदान करती है। सभी डेटा प्रकार YAML::Node कंटेनर में संग्रहीत होते हैं, जो एक स्केलर, अनुक्रम (सरणी) या मैपिंग (शब्दकोश) हो सकता है।



YAML फ़ाइल का उदाहरण



निम्नलिखित कॉन्फ़िगरेशन फ़ाइल config.yaml पर विचार करें:



database:  host: localhost  port: 5432  name: myapp  credentials:    user: admin    password: secret123

server: workers: 4 timeout: 30.5 debug: true

allowed_ips: - 192.168.0.1 - 192.168.0.2 - 10.0.0.1


YAML फ़ाइल को पार्स करना



फ़ाइल से डेटा लोड करने के लिए YAML::LoadFile() फ़ंक्शन का उपयोग किया जाता है:



#include <yaml-cpp/yaml.h>#include <iostream>#include <string>#include <vector>

int main() { try { // YAML फ़ाइल लोड करें YAML::Node config = YAML::LoadFile("config.yaml");

// [] ऑपरेटर के माध्यम से नेस्टेड डेटा तक पहुंच std::string host = config["database"]["host"].as<std::string>(); int port = config["database"]["port"].as<int>(); std::string user = config["database"]["credentials"]["user"].as<std::string>();

std::cout << "Database host: " << host << std::endl; std::cout << "Database port: " << port << std::endl; std::cout << "User: " << user << std::endl;

// अनुक्रम (सूची) के साथ कार्य YAML::Node ips = config["allowed_ips"]; std::vector<std::string> ipList; for (const auto& ip : ips) { ipList.push_back(ip.as<std::string>()); }

std::cout << "Allowed IPs: "; for (const auto& ip : ipList) { std::cout << ip << " "; } std::cout << std::endl;

} catch (const YAML::Exception& e) { std::cerr << "YAML Error: " << e.what() << std::endl; return 1; }

return 0;}


YAML बनाना और सीरियलाइज़ करना



yaml-cpp प्रोग्रामेटिक रूप से YAML दस्तावेज़ बनाने और उन्हें फ़ाइल में सहेजने की भी अनुमति देता है:



#include <yaml-cpp/yaml.h>#include <fstream>

int main() { // रूट नोड बनाएं YAML::Node config;

// डेटा जोड़ें config["application"]["name"] = "MyApp"; config["application"]["version"] = 2.1; config["application"]["debug"] = false;

// एक अनुक्रम बनाएं config["features"].push_back("logging"); config["features"].push_back("caching"); config["features"].push_back("auth");

// वी

अनुशंसाएँ