C++ में फ़ाइलें: 20 मिनट में शुरुआत से विशेषज्ञ तक
\n\nकल्पना करें कि आपका प्रोग्राम एक बेहतरीन रसोइया है। वह खाना बनाना जानता है, लेकिन सभी सामग्री हाथ से लानी पड़ती है, और रेसिपी हर उपयोग के बाद गायब हो जाती हैं। बहुत अच्छा नहीं लगता, है ना? यही कारण है कि किसी भी स्वाभिमानी डेवलपर को फ़ाइलों और फ़ाइल सिस्टम के साथ काम करना आना चाहिए। C++ में यह सिर्फ 'संभव' नहीं है - यह एक आधार है, जिसके बिना आप एक प्रोग्रामर के रूप में असहज महसूस करेंगे।
\n\nआज हम C++ में फ़ाइलों के साथ काम करना इस तरह से समझेंगे कि आप सिर्फ कोड कॉपी न करें, बल्कि वास्तव में समझें कि अंदर क्या हो रहा है। उबाऊ व्याख्यानों के बिना, जीवंत उदाहरणों और व्यावहारिक सुझावों के साथ। चलिए शुरू करते हैं!
\n\nस्ट्रीम - C++ में फ़ाइलों के साथ काम करने का आधार
\n\nC++ में फ़ाइलों के साथ काम करना स्ट्रीम के इर्द-गिर्द बनाया गया है। यदि आप पहले से ही cout और cin से परिचित हैं, तो समझ लें कि आधा काम हो गया है। फ़ाइल स्ट्रीम उसी सिद्धांत पर काम करती हैं, बस स्क्रीन या कीबोर्ड के बजाय डेटा फ़ाइल में भेजा जाता है या उससे लोड किया जाता है।
मैदान के मुख्य खिलाड़ी:
\n\n- \n
ifstream- फ़ाइल से पढ़ने के लिए (input file stream)। \n ofstream- फ़ाइल में लिखने के लिए (output file stream)। \n fstream- पढ़ने और लिखने के लिए सार्वभौमिक स्ट्रीम। \n
ये सभी क्लास हेडर फ़ाइल <fstream> में रहते हैं। इसे शामिल करना न भूलें, नहीं तो कंपाइलर नाराज़ हो जाएगा।
फ़ाइल कैसे खोलें और परेशान न हों
\n\nC++ में फ़ाइल खोलना एक दरवाज़ा खोलने जैसा है: आपको पता होना चाहिए कि कहाँ जाना है और क्यों। आइए लिखने के लिए फ़ाइल खोलने का एक सरल उदाहरण देखें:
\n\n#include <iostream>\n#include <fstream>\n#include <string>\n\nint main() {\n std::ofstream outFile("example.txt"); // फ़ाइल को लिखने के लिए खोलें\n \n if (outFile.is_open()) {\n outFile << "नमस्ते, फ़ाइल!" << std::endl;\n outFile << "यह दूसरी पंक्ति है।" << std::endl;\n outFile.close(); // फ़ाइल बंद करें\n std::cout << "लेखन सफलतापूर्वक पूरा हुआ!" << std::endl;\n } else {\n std::cerr << "फ़ाइल खोलने में विफल!" << std::endl;\n }\n \n return 0;\n}\n\n\nध्यान दें: हम हमेशा is_open() से जाँचते हैं कि फ़ाइल खुली है या नहीं। यदि फ़ाइल मौजूद नहीं है, तो ofstream इसे स्वचालित रूप से बनाएगा। और यदि ऐसा नहीं हो पाता (जैसे, लिखने की अनुमति नहीं है), तो प्रोग्राम क्रैश नहीं होगा, बल्कि त्रुटि की सूचना देगा।
खोलने के मोड: जब एक पर्याप्त नहीं है
\n\nडिफ़ॉल्ट रूप से, ofstream फ़ाइल को ओवरराइट करता है, और ifstream केवल पढ़ता है। लेकिन क्या होगा यदि आप फ़ाइल के अंत में डेटा जोड़ना चाहते हैं? या एक साथ पढ़ने और लिखने के लिए फ़ाइल खोलना चाहते हैं? यहाँ मोड फ़्लैग काम आते हैं:
- \n
std::ios::in- पढ़ने के लिए खोलें। \n std::ios::out- लिखने के लिए खोलें (ofstream के लिए डिफ़ॉल्ट)। \n std::ios::app- फ़ाइल के अंत में जोड़ें (append)। \n std::ios::ate- खोलते समय कर्सर को अंत में ले जाएँ। \n std::ios::binary- बाइनरी मोड में खोलें। \n
मोड के उपयोग का उदाहरण:
\n\nstd::ofstream logFile("log.txt", std::ios::app); // अंत में जोड़ें\nif (logFile.is_open()) {\n logFile << "लॉग में नई प्रविष्टि" << std::endl;\n logFile.close();\n}\n\n\nऔर यदि आपको एक साथ पढ़ना और लिखना है, तो संयुक्त फ़्लैग के साथ fstream का उपयोग करें:
std::fstream file("data.txt", std::ios::in | std::ios::out);\n\n\nफ़ाइल से पढ़ना: शब्दों और पंक्तियों में
\n\nC++ में फ़ाइल से पढ़ना एक अलग कला है। आप शब्दों में, पंक्तियों में, वर्णों में पढ़ सकते हैं। चुनाव कार्य पर निर्भर करता है।
\n\nपंक्तियों में पढ़ना (सबसे लोकप्रिय तरीका)
\n\n#include <fstream>\n#include <iostream>\n#include <string>\n\nint main() {\n std::