मुझे आशा है कि इस सवाल का stackoverflow के लिए उपयुक्त है धारण करने के लिए ... एक std::string
में कच्चे डेटा बाइट (8 बिट) के भंडारण के बजाय उन्हें std::vector<char>
में भंडारण के बीच क्या अंतर है । मैं एक फ़ाइल से बाइनरी डेटा पढ़ रहा हूं और उन कच्चे बाइट्स को std::string
में संग्रहीत कर रहा हूं। यह अच्छी तरह से काम करता है, ऐसा करने में कोई समस्या या समस्या नहीं है। मेरा कार्यक्रम अपेक्षित काम करता है। हालांकि, अन्य प्रोग्रामर std::vector<char>
दृष्टिकोण पसंद करते हैं और सुझाव देते हैं कि मैं std::string
का उपयोग करना बंद कर दूंगा क्योंकि यह कच्चे बाइट्स के लिए असुरक्षित है। तो मैं सोच रहा हूं कि कच्चे डेटा बाइट्स रखने के लिए std::string
का उपयोग करना असुरक्षित क्यों हो सकता है? मुझे पता है std::string
अक्सर ASCII पाठ को स्टोर करने के लिए उपयोग किया जाता है, लेकिन बाइट एक बाइट है, इसलिए मुझे std::vector<char>
की वरीयता नहीं समझती है।std :: स्ट्रिंग या std :: वेक्टर <char> कच्चे डेटा
किसी भी सलाह के लिए धन्यवाद!
ऐसा लगता था कि std :: स्ट्रिंग को संगत भंडारण प्रदान करने की गारंटी नहीं थी, जो महत्वपूर्ण है यदि आप डेटा के लिए गैर-कॉन्स्ट पॉइंटर प्राप्त करने के लिए '& s [0]' जैसी चीजें करते हैं। लेकिन यह अब सी ++ 11 के रूप में सच नहीं है। –
[वेक्टर बाइनरी डेटा के लिए बनाम स्ट्रिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1556229/vector-unsigned-char-vs-string-for-binary-data) –