C में कस्टम इनपुट स्ट्रीम बनाना
C में कस्टम इनपुट स्ट्रीम गैर-मानक स्रोतों से डेटा पढ़ने के लिए एक शक्तिशाली तंत्र प्रदान करते हैं। हालांकि आईस्ट्रीम क्लास को सीधे विस्तारित करना एक व्यवहार्य विकल्प की तरह लग सकता है, कुशल और विश्वसनीय कार्यान्वयन सुनिश्चित करने के लिए अन्य तरीकों का पता लगाने की सिफारिश की जाती है।
स्ट्रीमबफ से प्राप्त करना
पसंदीदा तरीका C में कस्टम स्ट्रीम बनाने के लिए std::streambuf बेस क्लास से एक अनुकूलित स्ट्रीमबफ क्लास प्राप्त करना है। अंडरफ़्लो() और ओवरफ़्लो() जैसे विशिष्ट संचालन को ओवरराइड करके, आप स्ट्रीम के व्यवहार को नियंत्रित कर सकते हैं और वांछित कार्यक्षमता लागू कर सकते हैं।
फ़िल्टर स्ट्रीम बफ़र्स
स्थितियों में जहां डेटा परिवर्तन की आवश्यकता है, फ़िल्टर स्ट्रीम बफ़र्स बनाने पर विचार करें। ये बफ़र्स मूल स्ट्रीम बफ़र और कस्टम स्ट्रीम के बीच मध्यस्थ के रूप में कार्य करते हैं, जो इनपुट संचालन के दौरान डेटा हेरफेर की अनुमति देते हैं।
अंडरफ़्लो() और ओवरफ़्लो() को लागू करना
अंडरफ़्लो() ऑपरेशन अंतर्निहित स्ट्रीम बफ़र से डेटा प्राप्त करने के लिए ज़िम्मेदार है, जबकि ओवरफ़्लो() डेटा आउटपुट को संभालता है। इन फ़ंक्शंस को ओवरराइड करके, आप कस्टम डेटा हैंडलिंग लॉजिक को कार्यान्वित कर सकते हैं, जैसे संपीड़न/डीकंप्रेसन या एन्क्रिप्शन/डिक्रिप्शन।
उदाहरण: डेटा को डीकंप्रेस करना
के उपयोग को प्रदर्शित करना कस्टम स्ट्रीम, आइए एक स्ट्रीमबफ बनाएं जो बाहरी लाइब्रेरी का उपयोग करके इनपुट डेटा को डीकंप्रेस करता है। हमारा डीकंप्रेसबफ वर्ग मूल स्ट्रीम बफर से डेटा को डीकंप्रेस करने और इसे आंतरिक बफर में संग्रहीत करने के लिए अंडरफ्लो() को ओवरराइड करता है।
कस्टम स्ट्रीम का उपयोग करना
एक बार कस्टम स्ट्रीमबफ हो जाता है बनाया गया, आप इसके साथ एक आईस्ट्रीम ऑब्जेक्ट प्रारंभ कर सकते हैं। यह आपको अपने डीकंप्रेसिंग स्ट्रीम बफर से डेटा को निर्बाध रूप से पढ़ने में सक्षम बनाता है, जैसा कि नीचे दिखाया गया है:
std::ifstream fin("compressed.data");
decompressbuf debuf(fin.rdbuf());
std::istream decompressed(&debuf);
निष्कर्ष
स्ट्रीमबफ से प्राप्त करना और फ़िल्टर स्ट्रीम बफ़र्स को लागू करना सी में कस्टम इनपुट स्ट्रीम बनाने के लिए लचीले और कुशल तरीके प्रदान करता है। इन तकनीकों का लाभ उठाकर, आप आसानी से डेटा हैंडलिंग संचालन को अनुकूलित कर सकते हैं, विभिन्न डेटा प्रारूपों को प्रबंधित कर सकते हैं और बाहरी पुस्तकालयों के साथ एकीकृत कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3