मैं एम्बेडेड सिस्टम के लिए कुछ सी ++ में उपयोगकर्ता स्पेस लिनक्स सॉकेट कार्यक्षमता को लपेट रहा हूं (हाँ, यह संभवतः फिर से पहिया को फिर से शुरू कर रहा है)।सीधे सी ++ std में पढ़ा() का उपयोग करना: वेक्टर
मैं एक वेक्टर का उपयोग करके एक पढ़ना और लिखना कार्यान्वयन देना चाहता हूं।
लेखन करना बहुत आसान है, मैं बस &myvec[0]
पास कर सकता हूं और अनावश्यक प्रतिलिपि से बच सकता हूं। मैं एक ऐसा करना चाहता हूं और एक चार बफर में पढ़ने के बजाय सीधे एक वेक्टर में पढ़ना चाहता हूं, फिर इसे सभी नव निर्मित वेक्टर में कॉपी करना।
अब, मुझे पता है कि मैं कितना डेटा पढ़ना चाहता हूं, और मैं उचित रूप से आवंटित कर सकता हूं (vec.reserve()
)। मैं &myvec[0]
में भी पढ़ सकता हूं, हालांकि यह शायद एक बहुत खराब विचार है। जाहिर है यह करने से myvec.size को समझदार कुछ भी वापस करने की अनुमति नहीं है। वहाँ यह है कि ऐसा करने का कोई तरीका है:
- पूरी तरह से एक सुरक्षा से yucky महसूस नहीं करता/C++ परिप्रेक्ष्य
- डेटा ब्लॉक की दो प्रतियां शामिल नहीं करता है - एक बार गिरी से उपयोगकर्ता अंतरिक्ष के लिए और एक बार से एक सी +12 वेक्टर में सी
char *
स्टाइल बफर।
क्या एक वेक्टर? –
वर्णों का एक वेक्टर (अच्छी तरह से, बाइट्स)! – Joe
शायद आप बाइट्स के लिए 'uint8_t' या' unsigned char 'का उपयोग करना चाहते हैं। – tzaman