سؤال

وأي أفكار حول كيفية جعل BSTR من أصل LPCOLESTR؟ شيء سخيف للحصول على التعلق ..

هل كانت مفيدة؟

المحلول

وهناك LPCOLESTR هو مجرد const wchar_t*، بحيث يمكنك استخدام SysAllocString() لإنشاء BSTR:

LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);

وتأكد من الاتصال SysFreeString() عند الانتهاء من ذلك مع BSTR الخاص بك. انظر أيضا ثائق MSDN على BSTRs

نصائح أخرى

والفرق بين BSTR وLPCOLESTR هو أن BSTR لديه طول السلسلة مسبوقة قبل سلسلة، LPCOLESTR لم يفعل ذلك.

وA BSTR ليس بالضرورة لإنهاء \ 0 نهاية وسم سلسلة، حيث يتم مسبوقة طول السلسلة، لتحويل وعادة ما تستخدم في CComBSTR فئة (atlcomcli.h)، المنشئ يأخذ إما BSTR أو LPCOLESTR كما حجة وهناك BSTR عضوا () للحصول على تمثيل BSTR:

CComBSTR b( yourolestring )
// b.BSTR()

وCComBSTR ستتعامل مع تخصيص / تحرير لذلك لا يوجد خطر من تسرب الذاكرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top