हालांकि std::istringstream
के उपयोग (कभी कभी erronously प्रमुख i
साथ करने के लिए भेजा; भी इस तरह के एक वर्ग मरता मौजूद हैं,, लेकिन निर्माण करने के लिए के रूप में यह भी एक निर्गम धारा सेट अधिक महंगा है) बहुत लोकप्रिय है, मुझे लगता है कि इसके लायक है यह इंगित करते हुए कि यह कम से कम, वास्तविक स्ट्रिंग की एक प्रति बनाता है (मुझे संदेह होगा कि अधिकांश कार्यान्वयन दो प्रतियां भी बनाते हैं)। भी
struct membuf: std::streambuf {
membuf(char* base, std::ptrdiff_t n) {
this->setg(base, base, base + n);
}
};
membuf sbuf(base, n);
std::istream in(&sbuf);
स्मृति अंतर कोई फर्क नहीं सकता है, हालांकि बचाया आवंटन वहाँ उल्लेखनीय हो सकता है की एक छोटे से क्षेत्र के लिए: किसी भी प्रति बनाई जा रही एक छोटी सी धारा बफर का उपयोग कर बचा जा सकता है। स्मृति के बड़े हिस्से के लिए यह एक बड़ा अंतर बनाता है।
स्रोत
2012-11-27 14:26:31
संभावित डुप्लिकेट [मानक स्ट्रीम (पबेटबफ) द्वारा उपयोग किए जाने वाले आंतरिक बफर को सेट करना] (http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a- मानक- स्ट्रीम-pubsetbuf) –