C++ बाइनरी डेटा लिखने के लिए बाइनरी फ़ाइलों, विशेष रूप से 'ऑफस्ट्रीम' क्लास के साथ इंटरैक्ट करने के लिए
C++ का उपयोग करके एक बाइनरी फ़ाइल लिखें
C++ का उपयोग करके डेटा को बाइनरी फ़ाइल में सहेजने के लिए, राइट() विधि नियोजित की जाती है। यह फ़ंक्शन निर्दिष्ट स्ट्रीम में निर्दिष्ट संख्या में बाइट्स लिखता है, जो 'पुट' पॉइंटर के स्थान से शुरू होता है। यदि 'पुट' पॉइंटर अंत में है, तो फ़ाइल विस्तारित हो जाती है। हालाँकि, यदि पॉइंटर फ़ाइल के भीतर है तो नया डेटा मौजूदा वर्णों को अधिलेखित कर देता है। लेखन प्रक्रिया के दौरान किसी त्रुटि की स्थिति में, स्ट्रीम को त्रुटि स्थिति में चिह्नित किया जाता है। अब, आइए कुछ सरल और अंतर्निहित C++ फ़ंक्शंस का उपयोग करके बाइनरी फ़ाइल में लिखना सीखने के लिए उदाहरणों पर आगे बढ़ें।
विधि 1: संरचित डेटा के साथ बाइनरी फ़ाइलें लिखना
आपको कई मामलों में बाइनरी फ़ाइल में संरचित डेटा, जैसे कस्टम संरचनाएं, लिखने की आवश्यकता हो सकती है। आइए एक उदाहरण पर विचार करें जिसमें किसी व्यक्ति का रिकॉर्ड शामिल है जिसमें व्यक्ति का नाम, ऊंचाई और उम्र शामिल है। निम्नलिखित दिए गए कोड को देखें और स्पष्टीकरण पर एक नज़र डालें:
#शामिल करें
#शामिल
struct व्यक्ति {
चार नाम [ पचास ] ;
int यहाँ आयु ;
दोहरा ऊंचाई ;
} ;
int यहाँ मुख्य ( ) {
कक्षा :: ऑफस्ट्रीम आउटफ़ाइल ( 'लोग.बिन' , कक्षा :: आईओएस :: द्विआधारी ) ;
अगर ( ! आउटफ़ाइल। खुला है ( ) ) {
कक्षा :: सेर << 'त्रुटि! लिखने के लिए फ़ाइल नहीं खोली जा सकती!' << कक्षा :: अंतः ;
वापस करना 1 ;
}
व्यक्ति व्यक्ति1 = { 'कलसूम इलियास' , 25 , 1.75 } ;
व्यक्ति व्यक्ति2 = { 'कलसूम बाजवा' , 30 , 1.68 } ;
आउटफ़ाइल। लिखना ( पुनर्व्याख्या_कास्ट < चार *> ( & व्यक्ति 1 ) , का आकार ( व्यक्ति 1 ) ) ;
आउटफ़ाइल। लिखना ( पुनर्व्याख्या_कास्ट < चार *> ( & व्यक्ति2 ) , का आकार ( व्यक्ति2 ) ) ;
आउटफ़ाइल। बंद करना ( ) ;
कक्षा :: अदालत << 'व्यक्ति का रिकॉर्ड बाइनरी फ़ाइल में सफलतापूर्वक लिखा गया है।' << कक्षा :: अंतः ;
वापस करना 0 ;
}
यहां विशिष्ट विवरण के साथ कोड का विवरण दिया गया है। कार्यक्रम 'व्यक्ति' नामक एक कस्टम संरचना को परिभाषित करने के साथ शुरू होता है। इसमें तीन फ़ील्ड हैं: नाम, आयु और ऊंचाई। इन क्षेत्रों का विवरण इस प्रकार है:
- नाम: व्यक्ति का नाम संग्रहीत करने के लिए एक स्ट्रिंग (50 अक्षर तक)
- आयु: व्यक्ति की आयु संग्रहीत करने के लिए एक पूर्णांक
- ऊंचाई: व्यक्ति की ऊंचाई को संग्रहीत करने के लिए एक डबल
'व्यक्ति' संरचना को परिभाषित करने के बाद, मुख्य कार्य शुरू होता है जो प्रोग्राम का प्रवेश बिंदु है। मुख्य प्रोग्राम की पहली पंक्ति 'people.bin' नाम की एक फ़ाइल खोलती है। हम बाइनरी प्रारूप में डेटा लिखने के लिए 'people.bin' नामक फ़ाइल बनाने के लिए 'std::ofstream' का उपयोग करते हैं। यह जाँचना कि फ़ाइल सफलतापूर्वक खुलती है या नहीं, बहुत महत्वपूर्ण है। अन्यथा, एक त्रुटि संदेश दिखाया जाता है और प्रोग्राम बंद हो जाता है। इसलिए, 'if' कंडीशन और is_open() फ़ंक्शन की सहायता से, हम जांचते हैं कि फ़ाइल सफलतापूर्वक खुल गई है या नहीं।
यहां, दो 'व्यक्ति' ऑब्जेक्ट बनाए गए हैं। हम 'व्यक्ति' प्रकार के दो चर, 'व्यक्ति1' और 'व्यक्ति2' को परिभाषित करते हैं। हम 'कलसूम इलियास' और 'कलसूम बाजवा' के लिए चर नाम, आयु और ऊंचाई मान निर्दिष्ट करते हैं।
अब जब हमारे पास बाइनरी फ़ाइल में लिखने के लिए डेटा है, तो आइए राइट() फ़ंक्शन के साथ वास्तविक फ़ंक्शन निष्पादित करें। हम फ़ाइल में प्रत्येक 'व्यक्ति' ऑब्जेक्ट की सामग्री लिखने के लिए 'outFile.write' का उपयोग करते हैं। 'reinterpret_cast
फ़ाइल पर डेटा लिखने के बाद उसे ठीक से बंद करना बहुत ज़रूरी है ताकि किसी अन्य फ़ंक्शन के कारण कोई डेटा नष्ट न हो जाए। हम फ़ाइल से जुड़े संसाधनों को जारी करने और यह सुनिश्चित करने के लिए कि डेटा सटीक रूप से लिखा गया है, outFile.close() का उपयोग करते हैं। अंत में, हम एक संदेश प्रिंट करते हैं जो बाइनरी फ़ाइल में डेटा के सफल लेखन की पुष्टि करता है।
यदि हम इस उदाहरण को सरल शब्दों में समझाएं, तो एक विशेष नोटबुक की कल्पना करें जो केवल गुप्त भाषा में लोगों के बारे में जानकारी संग्रहीत कर सकती है। यह कोड जानकारी (नाम, उम्र, ऊंचाई) को व्यवस्थित करने के लिए एक खाका तैयार करता है। यह नोटबुक खोलता है, दो लोगों के प्रोफाइल भरता है, जानकारी को गुप्त भाषा में अनुवादित करता है, और इसे बड़े करीने से अंदर लिखता है। इसके बाद यह भविष्य में उपयोग के लिए प्रोफाइल को संरक्षित करते हुए, नोटबुक को सुरक्षित रूप से बंद कर देता है। प्रोग्राम के आउटपुट को देखें जो निम्नलिखित स्नैपशॉट में दिया गया है:
विधि 2: बाइनरी फ़ाइल में पूर्णांक लिखना
इस विधि में, पूर्णांकों की एक सरणी 'integers.bin' नामक बाइनरी फ़ाइल में लिखी जाती है। 'reinterpret_cast
#शामिल
int यहाँ मुख्य ( ) {
कक्षा :: ऑफस्ट्रीम आउटफ़ाइल ( 'पूर्णांक.बिन' , कक्षा :: आईओएस :: द्विआधारी ) ;
अगर ( ! आउटफ़ाइल। खुला है ( ) ) {
कक्षा :: सेर << 'त्रुटि! लिखने के लिए फ़ाइल नहीं खोली जा सकती!' << कक्षा :: अंतः ;
वापस करना 1 ;
}
int यहाँ नंबर [ ] = { 42 , 99 , - 1 , 0 } ;
आउटफ़ाइल। लिखना ( पुनर्व्याख्या_कास्ट < चार *> ( नंबर ) , का आकार ( नंबर ) ) ;
आउटफ़ाइल। बंद करना ( ) ;
कक्षा :: अदालत << 'दिए गए पूर्णांक बाइनरी फ़ाइल में सफलतापूर्वक लिखे गए।' << कक्षा :: अंतः ;
वापस करना 0 ;
}
यहां विशिष्ट विवरण के साथ कोड का विवरण दिया गया है:
'#include
अगली पंक्ति जो है 'int number[] = {42, 99, -1, 0};' पूर्णांक 42, 99, -1 और 0 के साथ 'संख्या' नामक एक सरणी को परिभाषित करता है। 'outFile.write(reinterpret_cast
निष्कर्ष
विभिन्न प्रकार के डेटा को कुशलतापूर्वक संभालने के लिए C++ में बाइनरी फ़ाइलें लिखना एक महत्वपूर्ण कौशल है। C++ में बाइनरी फ़ाइलें लिखने के इस अन्वेषण में, हमने सीखा है कि बाइनरी डेटा को कुशलतापूर्वक संभालने के लिए 'ऑफस्ट्रीम' वर्ग को कैसे नियोजित किया जा सकता है। चाहे कस्टम संरचनाओं का उपयोग करके सरल पूर्णांक या संरचित डेटा से निपटना हो, प्रक्रिया में फ़ाइल स्ट्रीम खोलना, बाइनरी प्रारूप में डेटा लिखना और फिर फ़ाइल को बंद करना शामिल है। यह क्षमता C++ डेवलपर्स को विभिन्न प्रकार के बाइनरी डेटा प्रकारों के साथ काम करने की सुविधा प्रदान करती है, जो सिस्टम-स्तरीय प्रोग्रामिंग से लेकर मल्टीमीडिया प्रोसेसिंग तक के अनुप्रयोगों में भाषा की बहुमुखी प्रतिभा में योगदान करती है।