cereal C++: पूर्ण गाइड उदाहरणों के साथ

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

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

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

cereal क्या है और इसकी आवश्यकता क्यों है?

cereal C++ भाषा के लिए एक हल्की, header-only लाइब्रेरी है जो डेटा सीरियलाइज़ेशन के लिए उपयोग होती है। यह जटिल डेटा संरचनाओं (क्लासेज़, स्ट्रक्चर्स, STL कंटेनर) को JSON, XML और बाइनरी फॉर्मेट जैसे फॉर्मेट्स में बदलने और फिर उन्हें वापस पुनर्स्थापित करने की अनुमति देती है। यह प्रोग्राम की स्थिति को सहेजने, नेटवर्क पर डेटा भेजने, लॉगिंग या विभिन्न प्रोग्रामिंग भाषाओं के बीच जानकारी साझा करने के लिए महत्वपूर्ण है।

भारी समाधानों (जैसे Boost.Serialization) के विपरीत, cereal को पूर्व-संकलन या जटिल सेटअप की आवश्यकता नहीं होती। यह पूरी तरह से हेडर फ़ाइलों से बना है, जो किसी भी प्रोजेक्ट में एकीकरण को आसान बनाता है। मुख्य लाभ:

  • Header-only: लाइब्रेरी को अलग से बिल्ड करने की ज़रूरत नहीं।
  • C++11/14/17 सपोर्ट: भाषा की आधुनिक सुविधाओं का उपयोग करता है।
  • लचीलापन: कस्टम टाइप, स्मार्ट पॉइंटर्स, पॉलीमॉर्फिज़्म को सपोर्ट करता है।
  • प्रदर्शन: बाइनरी फॉर्मेट बहुत तेज़ और कॉम्पैक्ट है।

इंस्टॉलेशन

चूंकि cereal एक header-only लाइब्रेरी है, इंस्टॉलेशन का मतलब सिर्फ हेडर फ़ाइलों को आपके प्रोजेक्ट में कॉपी करना है। C++ के लिए pip install या npm install की ज़रूरत नहीं है। यहाँ दो मुख्य तरीके हैं:

तरीका 1: मैन्युअल इंस्टॉलेशन (सीखने के लिए अनुशंसित)

  1. GitHub से नवीनतम संस्करण डाउनलोड करें (हरा बटन "Code" → "Download ZIP")।
  2. आर्काइव को अनज़िप करें।
  3. include/cereal फ़ोल्डर को अपने प्रोजेक्ट फ़ोल्डर में कॉपी करें।
  4. कोड में इसे शामिल करें: #include "cereal/cereal.hpp"।

तरीका 2: vcpkg पैकेज मैनेजर के माध्यम से

# vcpkg इंस्टॉल करें (यदि पहले से नहीं है)
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat  # Windows
./bootstrap-vcpkg.sh   # Linux/macOS

# cereal इंस्टॉल करें
.\vcpkg install cereal  # Windows
./vcpkg install cereal  # Linux/macOS

# CMakeLists.txt में शामिल करें:
# find_package(cereal CONFIG REQUIRED)
# target_link_libraries(your_project PRIVATE cereal::cereal)

कोड उदाहरण के साथ त्वरित शुरुआत

चलिए एक सरल Person स्ट्रक्चर बनाते हैं और इसे JSON में सीरियलाइज़ करते हैं। main.cpp फ़ाइल बनाएँ:

#include <iostream>
#include <fstream>
#include <string>
#include <cereal/archives/json.hpp>
#include <cereal/types/string.hpp>

struct Person {
    std::string name;
    int age;

    // cereal के लिए अनिवार्य मेथड
    template<class Archive>
    void serialize(Archive& archive) {
        archive(name, age);
    }
};

int main() {
    Person p1{"Alice", 30};

    // फ़ाइल में लिखना
    {
        std::ofstream file("person.json");
        cereal::JSONOutputArchive archive(file);
        archive(CEREAL_NVP(p1));  // CEREAL_NVP — नामित फ़ील्ड के लिए
    }

    // फ़ाइल से पढ़ना
    Person p2;
    {
        std::ifstream file("person.json");
        cereal::JSONInputArchive archive(file);
        archive(p2);
    }

    std::cout << "Name: " << p2.name << ", Age: " << p2.age << std::endl;
    return 0;
}

कंपाइल करें: g++ -std=c++11 main.cpp -o main। चलाने के बाद, person.json फ़ाइल बनेगी जिसमें {"p1": {"name": "Alice", "age": 30}} होगा।

मुख्य तरीके और फंक्शन

नीचे लाइब्रेरी के प्रमुख तत्व दिए गए हैं। सभी उदाहरणों में #include <cereal/cereal.hpp> और संबंधित आर्काइव्स शामिल हैं।

1. cereal::JSONOutputArchive

क्या करता है: JSON फॉर्मेट में डेटा लिखने के लिए एक आर्काइव बनाता है।

पैरामीटर: std::ostream का रेफरेंस लेता है

अनुशंसाएँ