C++ में फ़ाइल सिस्टम के साथ कार्य: पूर्ण गाइड

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

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

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

C++ में फ़ाइल सिस्टम के साथ काम करना: बुनियादी से उन्नत तकनीकों तक



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



फ़ाइलों के साथ काम करने की मूल बातें: fstream लाइब्रेरी



fstream लाइब्रेरी (<fstream>) फ़ाइलों के साथ काम करने के लिए तीन मुख्य क्लास प्रदान करती है:



  • ifstream — फ़ाइल से पढ़ने के लिए (input file stream);
  • ofstream — फ़ाइल में लिखने के लिए (output file stream);
  • fstream — एक साथ पढ़ने और लिखने के लिए।


फ़ाइल से डेटा पढ़ना



टेक्स्ट फ़ाइल को खोलने और लाइन दर लाइन पढ़ने का एक सरल उदाहरण देखें:



#include <iostream>#include <fstream>#include <string>

int main() { std::ifstream inputFile("data.txt"); if (!inputFile.is_open()) { std::cerr << "फ़ाइल खोलने में त्रुटि!" << std::endl; return 1; }

std::string line; while (std::getline(inputFile, line)) { std::cout << line << std::endl; }

inputFile.close(); return 0;}


is_open() मेथड का उपयोग करके फ़ाइल खोलने की सफलता की जांच करना हमेशा महत्वपूर्ण होता है। स्कोप से बाहर निकलने पर फ़ाइल अपने आप बंद हो जाएगी, लेकिन close() को स्पष्ट रूप से कॉल करना एक अच्छा अभ्यास माना जाता है।



फ़ाइल में डेटा लिखना



फ़ाइल में लिखना कंसोल पर आउटपुट के समान ही किया जाता है — << ऑपरेटर का उपयोग करके:



#include <fstream>

int main() { std::ofstream outputFile("output.txt"); if (!outputFile) { std::cerr << "फ़ाइल बनाने में विफल!" << std::endl; return 1; }

outputFile << "लाइन 1" << std::endl; outputFile << "लाइन 2" << std::endl; outputFile << 42 << std::endl; // संख्याएँ स्वचालित रूप से टेक्स्ट के रूप में लिखी जाती हैं

outputFile.close(); return 0;}


डिफ़ॉल्ट रूप से, ofstream फ़ाइल को ओवरराइट करता है। अंत में डेटा जोड़ने के लिए, std::ios::app फ़्लैग का उपयोग करें:



std::ofstream outputFile("log.txt", std::ios::app);


बाइनरी फ़ाइलें और रैंडम एक्सेस



बाइनरी डेटा के साथ काम करने के लिए std::ios::binary फ़्लैग का उपयोग करें। read() और write() मेथड आपको मेमोरी ब्लॉक के साथ काम करने की अनुमति देते हैं:



#include <fstream>

struct Record { int id; char name[50];};

int main() { // स्ट्रक्चर लिखना Record rec = {1, "उदाहरण"}; std::ofstream binOut("data.bin", std::ios::binary); binOut.write(reinterpret_cast<char*>(&rec), sizeof(rec)); binOut.close();

// स्ट्रक्चर पढ़ना Record recIn; std::ifstream binIn("data.bin", std::ios::binary); binIn.read(reinterpret_cast<char*>(&recIn), sizeof(recIn)); binIn.close();

return 0;}


फ़ाइल के अंदर पोजीशनिंग के लिए, seekg() (इनपुट के लिए) और seekp() (आउटपुट के लिए) का उपयोग std::ios::beg, std::ios::cur या std::ios::end पैरामीटर के साथ करें।



आधुनिक C++: std::filesystem लाइब्रेरी



C++17 से शुरू करके, std::filesystem मॉड्यूल को स्टैंडर्ड लाइब्रेरी में शामिल किया गया, जो फ़ाइल सिस्टम के साथ काम करने को काफी सरल बनाता है। यह पथों, फ़ाइलों और डायरेक्टरी में हेरफेर के लिए सुविधाजनक फ़ंक्शन प्रदान करता है।

ब्लॉग

पुस्तक अनुशंसाएँ