2009-10-13 21 views
6

मैं सामान्य सी ++/एसटीएल/आईओस्ट्रीम सिंटैक्स के माध्यम से एक बाइनरी फ़ाइल में पढ़ रहा हूं। मैं पूरी सामग्री को एक गतिशील आवंटित चार सरणी में कॉपी कर रहा हूं और यह अब तक ठीक काम करता है।मेमोरीस्ट्रीम - स्ट्रिंगस्ट्रीम, स्ट्रिंग, अन्य?

लेकिन जब से मैं कार्यक्रम के दूसरे भाग के लिए लाइनों के रूप में सामग्री के कुछ हिस्सों की सेवा करना चाहते हैं, मुझे लगता है कि यह धाराओं से चिपक क्योंकि मैं cstring कार्यों के साथ आसपास हैक नहीं करना चाहते बेहतर/आसान होगा और संकेत दिए गए।

मेरा प्रश्न अब है, मैं स्मृति में पढ़ने को कैसे संग्रहीत कर सकता हूं। एक स्ट्रिंगस्ट्रीम में? या एक स्ट्रिंग में? जो बेहतर फिट बैठता है? क्या एक दूसरे के ऊपर कोई फायदे या नुकसान हैं?

अग्रिम धन्यवाद!

+0

ठीक है, यह पढ़ने के बाद कॉपी करना आसान है http://stackoverflow.com/questions/132358/how-to-read-file-content-into-istringstream यह (यदि यह सत्य है) यह भी कहता है कि स्ट्रिंगस्ट्रीम आंतरिक बफर एक स्ट्रिंग है (इसलिए मुझे लगता है कि नाम)। मैं इस बफर के लिए बाइट कैसे आरक्षित कर सकता हूं - मुझे उस पर किसी भी नोट को सीटीआर या किसी रिजर्व फ़ंक्शन के बारे में कुछ भी नहीं दिखाई देता ... – didito

उत्तर

4

आप एक धारा के रूप में यह से पढ़ने के लिए चाहते हैं, आप के साथ-साथ सीधे stringstream को फ़ाइल से पढ़ने हो सकता है:

std::stringstream data; 
data << input_file.rdbuf(); 

'डेटा' में 'input_file' की संपूर्ण सामग्री पढ़ता है। आप वहां से डेटा पढ़ सकते हैं जैसे कि आप कोई अन्य स्ट्रीम करेंगे।

+0

धन्यवाद, पहले से ही यह मिला है। सवाल यह है कि अब मेरी कक्षा में एक स्ट्रिंगस्ट्रीम को मेमोरी/चार बफर के रूप में स्टोर करना बुद्धिमान है? या मैं एक स्ट्रिंग का उपयोग करना चाहिए? – didito

+0

और std :: stringbuf के बारे में क्या? – didito

+0

अन्यथा करने के लिए एक विशिष्ट कारण की कमी, मैं सिर्फ स्ट्रिंगस्ट्रीम स्टोर करता हूं। –

संबंधित मुद्दे