दिलचस्प पोस्ट
आरटीएफ स्ट्रिंग से पाठ निकालने के लिए नियमित अभिव्यक्ति एंड्रॉइड 5.0: हाल के ऐप का शीर्षक रंग कैसे बदल सकता है? उद्धरण और सूची के बीच अंतर क्या है? UINavigationController के लिए कस्टम व्यू के साथ बैकबुटटम इटैम को कैसे बनाया जाए इम्यूलेटर त्रुटि: इस AVD के कॉन्फ़िगरेशन में एक कर्नेल फ़ाइल नहीं है डीजेंगो एक्सल एक्सएलवीटी (grep) गैर-एएससीआईआई वर्णों से मिलान करने के लिए रेगेक्स? समस्याओं को छवि स्रोत के रूप में सेट किया गया था, जब ओवरराइटिंग (पुनः-बचत) छवि एक्स, वाई एक्सिस-जेफ्री चार्ट के लिए रेंज सेट करना एक्लेप्से में जावा.ओ लाइब्रेरी का उपयोग करना ताकि फ़ाइल इनपुटस्ट्रीम एक डाटा फाइल पढ़ सके सीएसएस में फ़ॉन्ट विस्मयकारी आइकन का उपयोग करें XUnit धावक मेरे परीक्षणों को नहीं खोज रहा है अजगर में काम नहीं कर रहे वर्णों को प्रतिस्थापित करना सरलीकृत और पारंपरिक चीनी बनाम क्षेत्र इकाई फ़्रेमवर्क 4.2 आज्ञा sp_executesql अनुक्रमणिका (पैरामीटर सूँघने) का उपयोग नहीं करता है

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

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

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

Solutions Collecting From Web of "क्यों स्ट्रिंग स्ट्रीम की अनुमति नहीं है?"

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));