ऐसे कई Win32 फ़ंक्शंस हैं जो बफर का पता लेते हैं, जैसे कि TCHAR[256]
, और उस बफर को कुछ डेटा लिखें। यह बफर के आकार से कम हो सकता है या यह संपूर्ण बफर हो सकता है।st32 :: स्ट्रिंग को Win32 फ़ंक्शंस के साथ कैसे मिलाएं जो char [] buffers लेते हैं?
अक्सर आप इसे एक लूप में कॉल करेंगे, उदाहरण के लिए स्ट्रीम या पाइप से डेटा पढ़ने के लिए। अंत में मैं कुशलता से उस स्ट्रिंग को वापस करना चाहता हूं जिसमें इस डेटा को पुनर्प्राप्त करने के लिए सभी पुनरावृत्त कॉलों का पूरा डेटा हो। मैं std::string
का उपयोग करने के बारे में सोच रहा था क्योंकि यह + = जावा या सी #/StringBuilder.Append()
विधियों के समान तरीके से अनुकूलित किया गया है, स्मृति की बजाय गति का पक्ष ले रहा है।
लेकिन मुझे यकीन नहीं है किWin32 फ़ंक्शंस के साथ सह-मिश्रण कैसे करें, क्योंकि ये फ़ंक्शनसे शुरू होते हैं। कोई सुझाव?
यह भी ध्यान दें कि यूनिकोड मैक्रो के मूल्य के आधार पर टीसीएचएआर बदल जाएगा। यदि यूनिकोड परिभाषित किया गया है, तो स्ट्रिंग wchar_t * होगी और आपको इसके बजाय std :: wstring का उपयोग करना होगा। –
सीधे 'std :: string' आंतरिक बफर पर लिखना खतरनाक हो सकता है, क्योंकि स्ट्रिंग भी ऐसी चीजों को संग्रहीत करती है जो लंबाई हो सकती है जो आप कर सकते हैं। –
इडान सही है। स्ट्रिंग बफर को लिखने वाले फ़ंक्शन के लिए std :: स्ट्रिंग का उपयोग न करें। – jmucchiello