CStringT::SetSysString

Reallocates the BSTR pointed to by pbstr and copies the contents of the CStringT object into it, including the NULL character.

BSTR SetSysString(
   BSTR* pbstr
) const;

Parameters

  • pbstr
    A pointer to a character string.

Return Value

The new string.

Remarks

Depending on the contents of the CStringT object, the value of the BSTR referenced by pbstr can change. The function throws a CMemoryException if insufficient memory exists.

This function is normally used to change the value of strings passed by reference for Automation.

For more information about OLE reallocation functions in Windows, see SysReAllocStringLen and SysFreeString.

Example

BSTR bstr = ::SysAllocString(L"Golf is fun!");

// create a CAtlString and change the OLE 
// string to the contents of the BSTR 
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString str(_T("Soccer is best!"));
BSTR bstr2 = str.SetSysString(&bstr);

// Now, both bstr and bstr2 reference a single instance of 
// the "Soccer" string. The "Golf" string has been freed.
ASSERT(bstr2 == bstr);   

Requirements

Header: cstringt.h

See Also

Reference

CStringT Class

CMemoryException Class

Other Resources

CStringT Members