سؤال
وأي أفكار حول كيفية جعل BSTR من أصل LPCOLESTR؟ شيء سخيف للحصول على التعلق ..
المحلول
وهناك LPCOLESTR
هو مجرد const wchar_t*
، بحيث يمكنك استخدام SysAllocString()
أ > لإنشاء BSTR
:
LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);
وتأكد من الاتصال SysFreeString()
عند الانتهاء من ذلك مع BSTR
الخاص بك. انظر أيضا ثائق MSDN على BSTR
s
نصائح أخرى
والفرق بين BSTR وLPCOLESTR هو أن BSTR لديه طول السلسلة مسبوقة قبل سلسلة، LPCOLESTR لم يفعل ذلك.
وA BSTR ليس بالضرورة لإنهاء \ 0 نهاية وسم سلسلة، حيث يتم مسبوقة طول السلسلة، لتحويل وعادة ما تستخدم في CComBSTR فئة (atlcomcli.h)، المنشئ يأخذ إما BSTR أو LPCOLESTR كما حجة وهناك BSTR عضوا () للحصول على تمثيل BSTR:
CComBSTR b( yourolestring )
// b.BSTR()
وCComBSTR ستتعامل مع تخصيص / تحرير لذلك لا يوجد خطر من تسرب الذاكرة.
لا تنتمي إلى StackOverflow