Microsoft Specific
A _bstr_t object encapsulates the BSTR data type. The class manages resource allocation and deallocation through function calls to SysAllocString and SysFreeString and other BSTR APIs when appropriate. The _bstr_t class uses reference counting to avoid excessive overhead.
Constructs a _bstr_t object. |
Copies a BSTR into the BSTR wrapped by a _bstr_t. | |
Links a _bstr_t wrapper to a BSTR. | |
Constructs a copy of the encapsulated BSTR. | |
Returns the BSTR wrapped by a _bstr_t and detaches the BSTR from the _bstr_t. | |
Points to the BSTR wrapped by a _bstr_t. | |
Points to the beginning of the BSTR wrapped by the _bstr_t. | |
Returns the number of characters in the _bstr_t. |
Assigns a new value to an existing _bstr_t object. | |
Appends characters to the end of the _bstr_t object. | |
Concatenates two strings. | |
Checks if the encapsulated BSTR is a NULL string. | |
Compares two _bstr_t objects. | |
Extract the pointers to the encapsulated Unicode or multibyte BSTR object. |
// _bstr_t_Assign.cpp
#include <stdio.h>
{
// creates a _bstr_t wrapper
_bstr_t bstrWrapper;
bstrWrapper = "some text";
wprintf_s(L"bstrWrapper = %s\n",
static_cast<wchar_t*>(bstrWrapper));
BSTR bstr = bstrWrapper.Detach();
wprintf_s(L"bstrWrapper = %s\n",
static_cast<wchar_t*>(bstrWrapper));
// "some text"
wprintf_s(L"bstr = %s\n", bstr);
wprintf_s(L"bstrWrapper = %s\n",
static_cast<wchar_t*>(bstrWrapper));
bstrWrapper.Assign(bstr);
wprintf_s(L"bstrWrapper = %s\n",
static_cast<wchar_t*>(bstrWrapper));
SysFreeString(bstr);
bstr= SysAllocString(OLESTR("Yet another string"));
// two wrappers, one BSTR
_bstr_t bstrWrapper2 = bstrWrapper;
bstr = 0;
wprintf_s(L"bstrWrapper = %s\n",
static_cast<wchar_t*>(bstrWrapper));
wprintf_s(L"bstrWrapper2 = %s\n",
static_cast<wchar_t*>(bstrWrapper2));
_snwprintf_s(bstrWrapper.GetBSTR(), 100, bstrWrapper.length(),
L"changing BSTR");
wprintf_s(L"bstrWrapper = %s\n",
static_cast<wchar_t*>(bstrWrapper));
wprintf_s(L"bstrWrapper2 = %s\n",
static_cast<wchar_t*>(bstrWrapper2));
}
결과값
bstrWrapper = some text bstrWrapper = (null) bstr = some text bstrWrapper = SysAllocedString bstrWrapper = some text bstrWrapper = Yet another string bstrWrapper2 = some text bstrWrapper = changing BSTR bstrWrapper2 = some text
댓글을 달아 주세요