दिलचस्प पोस्ट
एएसपी एमवीसी आईआईएस 7 में परिणाम: HTTP त्रुटि 403.14 – निषिद्ध कैसे एक पासवर्ड prompt बिना एक mysqldump करने के लिए? MySQL LIMIT, OFFSET का उपयोग करके पृष्ठ पर अंक लगाना एकाधिक सीएसवी फ़ाइलों को अलग-अलग डेटा फ़्रेमों में पढ़ें किसी ऑब्जेक्ट संदर्भ में डॉट नोटेशन में जावास्क्रिप्ट स्ट्रिंग को कन्वर्ट करें दिन, घंटे, मिनट और सेकंड में सेकंड कन्वर्ट करें जावा प्रोग्राम के लिए मैं .exe कैसे बनाऊँ? कैसे जांचने के लिए कि ऑपरेटर == मौजूद है? पायथन सूची संरचना में NumPy सरणी परिवर्तित करना? एक ईजेबी को जेएक्स-आरएस (रेशम सेवा) में शामिल करें अनाम / अनाम नामस्थान बनाम स्थिर कार्य IOS UIImage क्लिप को पथ एक फ़ील्ड या किसी अन्य (XOR) की उपस्थिति मान्य करें फ़ाइल सिस्टम 32 के बजाय SysWOW64 में कॉपी हो रही है मैं एक टेबल की शरीर को कैसे स्क्रॉल कर सकता हूं लेकिन अपने सिर को जगह में रख सकता हूं?

क्यों स्ट्रिंग स्ट्रीम की अनुमति नहीं है?

int main() { std::stringstream s1("This is my string."); std::stringstream s2 = s1; // error, copying not allowed } 

मुझे कोई कारण नहीं मिल सका है कि मैं स्ट्रेंस्ट्रीम क्यों कॉपी नहीं कर सकता क्या आप कुछ संदर्भ प्रदान कर सकते हैं?

वेब के समाधान से एकत्रित समाधान "क्यों स्ट्रिंग स्ट्रीम की अनुमति नहीं है?"

C ++ में किसी भी स्ट्रीम की कॉपी प्रतिलिपि कन्स्ट्रक्टर private बनाने के द्वारा अक्षम है

कोई भी अर्थ है, चाहे वह stringstream , istream , stringstream , istream या जो भी हो

स्ट्रीम की प्रतिलिपि अक्षम कर दी गई है क्योंकि यह समझ नहीं आता है। यह समझने में बहुत ही बहुत महत्वपूर्ण है कि धारा का क्या मतलब है, वास्तव में समझने के लिए क्यों स्ट्रीम की प्रतिलिपि समझ नहीं पाती है stream एक कंटेनर नहीं है जो आप की प्रतिलिपि बना सकते हैं। इसमें डेटा शामिल नहीं है

यदि कोई सूची / वेक्टर / मैप या कोई कंटेनर एक बाल्टी है, तो स्ट्रीम एक नली है जिसके माध्यम से डेटा प्रवाह होता है स्ट्रीम के बारे में कुछ पाइप के रूप में सोचें, जिसके माध्यम से आप डेटा प्राप्त करते हैं; एक पाइप – एक तरफ स्रोत (प्रेषक) है, दूसरी ओर सिंक (रिसीवर) है। इसे यूनिडायरेक्शनल स्ट्रीम कहा जाता है इसमें द्विदिश प्रवाह भी हैं, जिनके माध्यम से डेटा दोनों दिशाओं में बहता है। तो क्या ऐसी बात की एक प्रति बनाने के लिए समझ में आता है? इसमें कोई भी डेटा शामिल नहीं है। यह जिसके माध्यम से आप डेटा प्राप्त करते हैं

अब थोड़ी देर के लिए लगता है कि धारा की प्रतिलिपि बनाने की अनुमति है, और आपने std::cin की एक प्रति बनाई है जो वास्तव में इनपुट स्ट्रीम है। कहो कॉपी किया गया ऑब्जेक्ट copy_cin अब खुद से पूछिए: क्या यह copy_cin स्ट्रीम से डेटा को पढ़ने के लिए समझ में आता है जब बहुत ही डाटा std::cin. से पहले ही पढ़ा जा चुका है std::cin. नहीं, यह समझ में नहीं आता है, क्योंकि उपयोगकर्ता ने केवल एक बार डेटा दर्ज किया था, कीबोर्ड (या इनपुट डिवाइस) ने केवल एक बार बिजली के संकेतों को उत्पन्न किया था और वे केवल एक बार अन्य सभी हार्डवेयर और निम्न स्तरीय एपीआई के माध्यम से प्रवाहित होते थे आपका प्रोग्राम इसे दो बार या उससे अधिक कैसे पढ़ सकता है?

इसलिए, प्रतिलिपि बनाने की अनुमति नहीं है, लेकिन संदर्भ बनाने की अनुमति है:

 std::istream copy_cin = std::cin; //error std::istream & ref_cin = std::cin; //ok 

यह भी ध्यान रखें कि आप स्ट्रीम का दूसरा उदाहरण बना सकते हैं और इसे उसी अंतर्निहित बफर का उपयोग कर सकते हैं जो पुराने स्ट्रीम वर्तमान में उपयोग कर रही है। इसे देखें: https://ideone.com/rijov

प्रश्न का सीधे उत्तर देने के लिए, आप प्रतिलिपि नहीं कर सकते क्योंकि स्ट्रिंगस्ट्रीम श्रेणी के लिए प्रतिलिपि निर्माता को निजी के रूप में घोषित किया गया है

यह संभवतः इस तरह से घोषित किया गया था क्योंकि अधिकांश मामलों में एक स्ट्रीम की प्रतिलिपि बनाने के लिए यह अजीब लगता है, इसलिए धारा वर्गों में से कोई भी सार्वजनिक प्रतिलिपि निर्माणकर्ता नहीं है

जैसा कि ऊपर उल्लेख किया गया है आप स्ट्रीम की प्रतिलिपि नहीं कर सकते हैं, लेकिन अगर आपको इसकी आवश्यकता है तो आप डेटा को कॉपी कर सकते हैं:

 std::stringstream from; std::stringstream to; std::copy(std::istream_iterator<char>(from), std::istream_iterator<char>(), std::ostream_iterator<char>(to));