C++ में CSV के साथ कार्य: लाइब्रेरीज़ और कोड उदाहरण

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

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

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

C++ में CSV के साथ कार्य: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण



CSV (कॉमा-सेपरेटेड वैल्यूज़) सारणीबद्ध डेटा भंडारण के सबसे लोकप्रिय प्रारूपों में से एक है। C++ में CSV के लिए कोई अंतर्निहित समर्थन नहीं है, हालांकि ऐसी फ़ाइलों को पढ़ने, लिखने और संसाधित करने के लिए कई लाइब्रेरीज़ और दृष्टिकोण मौजूद हैं। इस लेख में, हम C++ में CSV के साथ कार्य करने के मुख्य तरीकों पर विचार करेंगे, जिसमें लोकप्रिय लाइब्रेरीज़ libcsv और rapidcsv, साथ ही मानक उपकरणों का उपयोग करके पार्सर का कार्यान्वयन शामिल है।



C++ के लिए CSV क्यों महत्वपूर्ण है?

CSV का उपयोग सिस्टम के बीच डेटा आदान-प्रदान, डेटाबेस से निर्यात, मशीन लर्निंग और वैज्ञानिक गणनाओं के लिए किया जाता है। C++ में, लॉग, कॉन्फ़िगरेशन या Excel से डेटा आयात करने वाले अनुप्रयोगों में अक्सर CSV के साथ कार्य की आवश्यकता होती है। लाइब्रेरी का सही चयन विकास को गति देता है और कोड की विश्वसनीयता बढ़ाता है।



libcsv लाइब्रेरी

libcsv C में एक हल्की लाइब्रेरी है जो C++ प्रोजेक्ट्स के लिए उपयुक्त है। यह अनुकूलन योग्य विभाजकों, वर्ण एस्केपिंग और त्रुटि प्रबंधन के साथ CSV पार्सिंग का समर्थन करती है।

  • विभिन्न विभाजकों का समर्थन (अल्पविराम, अर्धविराम, टैब)।
  • एस्केप की गई स्ट्रिंग्स और उद्धरण चिह्नों के साथ कार्य।
  • न्यूनतम मेमोरी खपत।

libcsv के साथ CSV पढ़ने का उदाहरण:

#include <csv.h>#include <iostream>#include <vector>#include <string>

struct csv_state { std::vector<std::vector<std::string>> rows;};

void cb1(void *s, size_t len, void *data) { auto *state = static_cast<csv_state*>(data); state->rows.back().push_back(std::string(static_cast<char*>(s), len));}

void cb2(int c, void *data) { auto *state = static_cast<csv_state*>(data); state->rows.emplace_back();}

int main() { struct csv_parser p; csv_init(&p, CSV_STRICT); csv_set_delim(&p, ',');

csv_state state; state.rows.emplace_back();

const char *input = "Name,Age,CityAlice,30,New YorkBob,25,London"; csv_parse(&p, input, strlen(input), cb1, cb2, &state); csv_fini(&p, cb1, cb2, &state);

for (auto &row : state.rows) { for (auto &col : row) { std::cout << col << " "; } std::cout << std::endl; }

csv_free(&p); return 0;}


rapidcsv लाइब्रेरी

rapidcsv एक आधुनिक C++ लाइब्रेरी है जिसमें सुविधाजनक इंटरफ़ेस है। यह CSV पढ़ने और लिखने, स्वचालित डेटा प्रकार पहचान और हेडर के साथ कार्य का समर्थन करती है।

  • STL कंटेनरों पर आधारित सरल API।
  • स्ट्रिंग्स का स्वचालित रूप से संख्याओं में रूपांतरण।
  • कस्टम विभाजकों और एन्कोडिंग का समर्थन।

rapidcsv के साथ CSV लिखने और पढ़ने का उदाहरण:

#include <rapidcsv.h>#include <iostream>

int main() { // CSV लिखना rapidcsv::Document doc("", rapidcsv::LabelParams(0, 0)); doc.SetCell<std::string>(0, 0, "Product"); doc.SetCell<int>(1, 0, 2023); doc.SetCell<double>(2, 0, 99.99); doc.Save("data.csv");

// CSV पढ़ना rapidcsv::Document docRead("data.csv"); std::string product = docRead.GetCell<std::string>(0, 0); int year = docRead.GetCell<int>(1, 0); double price = docRead.GetCell<double>(2, 0);

std::cout << "Product: " << product << ", Year: " << year << ", Price: " << price << std::endl; return 0;}


C++ के मानक उपकरणों के माध्यम से CSV के साथ कार्य

यदि आप बाहरी लाइब्रेरीज़ को शामिल नहीं करना चाहते हैं, तो आप std::stringstream और std::getline का उपयोग करके पार्सर लागू कर सकते हैं। यह बिना एस्केपिंग वाले सरल CSV के लिए उपयुक्त है।

#include <iostream>#include <fstream>#include <sstrea                    

अनुशंसाएँ