मुझे कस्टम ओस्ट्रीम को कार्यान्वित करने के तरीके को समझने के लिए कुछ मार्गदर्शन या पॉइंटर्स चाहिए। मेरी आवश्यकताएं हैं:एक कस्टम ओस्ट्रीम
- कई डेटा प्रकारों के लिए '< <' ऑपरेटर वाला एक वर्ग।
- उद्देश्य डेटाबेस को आउटपुट भेजना है। प्रत्येक "रेखा" को एक अलग रिकॉर्ड में जाना चाहिए।
- प्रत्येक रिकॉर्ड सबसे महत्वपूर्ण फ़ील्ड टेक्स्ट (या ब्लॉब) होगा, लेकिन समय, आदि जैसे कुछ अन्य क्षेत्रों को स्वचालित रूप से
- बफरिंग महत्वपूर्ण है, क्योंकि मैं डेटाबेस में नहीं जाना चाहता हर रिकॉर्ड।
सबसे पहले, क्या यह ओस्ट्रीम से प्राप्त करने लायक है? ओस्ट्रीम से प्राप्त करके मुझे क्या मिलता है? क्या होगा यदि मेरी कक्षा बस कुछ operator<<
विधियों (कुछ कस्टम डेटा प्रकारों सहित) लागू करती है। ओस्ट्रीम से मुझे कौन सी कार्यक्षमता मिलती है?
मान लीजिए कि मैं जो चाहता हूं वह ओस्ट्रीम से ली गई कक्षा है, मुझे ओस्ट्रीम और स्ट्रीमबफ कक्षाओं के बीच संबंधों को समझने के लिए कुछ मार्गदर्शन की आवश्यकता है। मुझे किसको लागू करने की आवश्यकता है? कुछ नमूनों को देखते हुए, ऐसा प्रतीत होता है कि मुझे ओस्ट्रीम से प्राप्त करने की आवश्यकता नहीं है, और केवल ओस्ट्रीम कन्स्ट्रक्टर को एक कस्टम स्ट्रीमबफ दें। क्या यह सच है? क्या कैनोलिक दृष्टिकोण है?
कस्टम स्ट्रीमबफ पर कौन से आभासी कार्यों को लागू करने की आवश्यकता है? मैंने कुछ नमूने देखे हैं (इस साइट सहित: here और here, और कुछ और), कुछ sync
विधि को ओवरराइड करते हैं, और अन्य overflow
विधि को ओवरराइड करते हैं। मुझे किसको ओवरराइड करना चाहिए? साथ ही, स्ट्रिंगबफ और फ़ाइलबफ स्रोत (विजुअल स्टूडियो या जीसीसी) दोनों को देखते हुए उन बफर वर्ग स्ट्रीमबफ के कई तरीकों को लागू करते हैं।
यदि स्ट्रीमबफ से व्युत्पन्न कस्टम क्लास आवश्यक है, तो क्या स्ट्रीमबफ से सीधे स्ट्रिंगबफ (या किसी अन्य वर्ग) से प्राप्त कोई लाभ होगा?
"लाइनों" के लिए। मैं कम से कम जब 'एंडल' मैनिपुलेटर का उपयोग कर कक्षा के अपने उपयोगकर्ताओं को एक नई लाइन (यानी डेटाबेस में रिकॉर्ड) होना चाहता हूं। शायद - प्रयास पर निर्भर करता है - प्रत्येक '\ n' चरित्र को भी एक नया रिकॉर्ड माना जाना चाहिए। मेरे कस्टम ओस्ट्रीम और/या स्ट्रीमबफ प्रत्येक के लिए अधिसूचित कौन है?
आपको शायद अपनी खुद की 'स्ट्रीमबफ' कक्षा बनाना चाहिए, जो सभी भारी कामों को संभालता है, और फिर एक बहुत ही सरल 'ओस्ट्रीम' वर्ग बनाता है जो 'std :: basic_ostream' प्राप्त करता है और अपने' स्ट्रीमबफ 'ऑब्जेक्ट के साथ स्वयं को प्रारंभ करता है। –
आपको [बूस्ट.इस्ट्रीम] (http://www.boost.org/doc/libs/release/libs/iostreams/doc/index.html) देखना चाहिए - यह कस्टम स्ट्रीम और बफर को बहुत आसान बना देता है। –
आपके संपादन के लिए धन्यवाद, @ मार्कसपाकर – Uri