का उपयोग करने के लिए फ़ाइल स्ट्रीम फ़ंक्शन को कनवर्ट करना मेरे पास फ़ाइल स्ट्रीम से डेटा पढ़ने वाले सी ++ वर्गों का भार है। कार्य इस तरह दिखते हैं।सी ++ एक स्ट्रिंगस्ट्रीम
bool LoadFromFile(class ifstream &file);
मैं फ़ाइल के बजाय स्मृति से पढ़ने के लिए एक नया फ़ंक्शन बना रहा हूं। तो मैं चारों ओर गुग हो गया और एक istringstream कोड में किसी भी संशोधन के बिना चाल करने लगता है।
bool LoadFromData(class istringstream &file);
अब मेरा प्रश्न है। मुझे एक सार सरणी से पढ़ने के लिए इस स्ट्रीम को बनाने की आवश्यकता है। स्ट्रिंग को निरस्त नहीं किया गया है, यह शुद्ध बाइनरी डेटा है और मुझे आकार के साथ पूर्णांक मिला है। मैंने इसे एक स्ट्रिंग को असाइन करने और स्ट्रिंग से स्ट्रीम बनाने का प्रयास किया, हालांकि स्ट्रिंग एक शून्य चरित्र के बाद समाप्त हो जाती है .. और डेटा की प्रतिलिपि बनाई गई है।
int size;
char *data;
string s = *data;
मैं डेटा सूचक डेटा के आकार को निर्दिष्ट + कॉपी किए बिना ही एक चार सरणी सूचक से एक स्ट्रिंग बना सकता हूँ? क्या आप स्ट्रिंगस्ट्रीम की तुलना में कोई अन्य समाधान जानते हैं?
तो, स्पष्टीकरण: अपनी समस्या यह है कि अपने 'चार *' अशक्त समाप्त नहीं कर रहा है है और इसलिए आप मुसीबत इसे से बाहर एक 'std :: स्ट्रिंग' निर्माण हो रही हो? – quasiverse
हाँ यह मूल रूप से समस्या है। मैं यह भी सोच रहा हूं कि कोई बेहतर समाधान जानता है या नहीं। – Tito
यहां शायद समाधान हो सकता है: http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream-from-char-size-t-without-copying-th (एक संस्करण बूस्ट का उपयोग करता है, डेटा की प्रतिलिपि बनाने पर और एक केवल जीसीसी के साथ काम करता है) –