CComBSTR
Třída
Tato třída je obálka pro BSTR
s.
Syntaxe
class CComBSTR
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CComBSTR::CComBSTR |
Konstruktor |
CComBSTR::~CComBSTR |
Destruktor. |
Veřejné metody
Název | Popis |
---|---|
CComBSTR::Append |
Připojí řetězec k m_str . |
CComBSTR::AppendBSTR |
Připojí k BSTR m_str . |
CComBSTR::AppendBytes |
Připojí zadaný počet bajtů k m_str . |
CComBSTR::ArrayToBSTR |
BSTR Vytvoří z prvního znaku každého prvku v safearray a připojí ho k objektuCComBSTR . |
CComBSTR::AssignBSTR |
BSTR Přiřadí k m_str . |
CComBSTR::Attach |
Připojí objektBSTR .CComBSTR |
CComBSTR::BSTRToArray |
Vytvoří jednorozměrné jednorozměrné bezpečné pole založené na nule, kde každý prvek pole je znak z objektu CComBSTR . |
CComBSTR::ByteLength |
Vrátí délku m_str v bajtech. |
CComBSTR::Copy |
Vrátí kopii .m_str |
CComBSTR::CopyTo |
Vrátí kopii m_str prostřednictvím parametru [out] . |
CComBSTR::Detach |
Odpojte m_str objekt CComBSTR . |
CComBSTR::Empty |
Osvobodí m_str . |
CComBSTR::Length |
Vrátí délku m_str . |
CComBSTR::LoadString |
Načte prostředek řetězce. |
CComBSTR::ReadFromStream |
Načte BSTR objekt ze streamu. |
CComBSTR::ToLower |
Převede řetězec na malá písmena. |
CComBSTR::ToUpper |
Převede řetězec na velká písmena. |
CComBSTR::WriteToStream |
m_str Uloží se do datového proudu. |
Veřejné operátory
Název | Popis |
---|---|
CComBSTR::operator BSTR |
Přetypuje CComBSTR objekt na BSTR. |
CComBSTR::operator ! |
Vrátí hodnotu PRAVDA nebo NEPRAVDA v závislosti na tom, jestli m_str má hodnotu NULL. |
CComBSTR::operator != |
CComBSTR Porovná řetězec. |
CComBSTR::operator & |
Vrátí adresu .m_str |
CComBSTR::operator += |
CComBSTR Připojí k objektu. |
CComBSTR::operator < |
CComBSTR Porovná řetězec. |
CComBSTR::operator = |
Přiřadí hodnotu .m_str |
CComBSTR::operator == |
CComBSTR Porovná řetězec. |
CComBSTR::operator > |
CComBSTR Porovná řetězec. |
Veřejné datové členy
Název | Popis |
---|---|
CComBSTR::m_str |
Obsahuje přidruženou BSTR k objektu CComBSTR . |
Poznámky
Třída CComBSTR
je obálka pro BSTR
s, což jsou řetězce s předponou délky. Délka je uložena jako celé číslo v umístění paměti před daty v řetězci.
Hodnota A BSTR
je ukončena po posledním počítaném znaku, ale může obsahovat také znaky null vložené v řetězci. Délka řetězce je určena počtem znaků, nikoli prvním znakem null.
Poznámka:
Třída CComBSTR
poskytuje řadu členů (konstruktory, operátory přiřazení a relační operátory), které jako argumenty přebírají řetězce ANSI nebo Unicode. Verze ANSI těchto funkcí jsou méně efektivní než jejich protějšky Unicode, protože dočasné řetězce Unicode se často vytvářejí interně. Pro zajištění efektivity používejte verze Unicode, pokud je to možné.
Poznámka:
Z důvodu vylepšeného chování vyhledávání implementovaného v sadě Visual Studio .NET by měl být místo toho implementován kód, například bstr = L"String2" + bstr;
, který mohl být zkompilován v předchozích verzích, jako bstr = CStringW(L"String2") + bstr
.
Seznamupozorněních CComBSTR
CComBSTR
Požadavky
Záhlaví: atlbase.h
CComBSTR::Append
Připojí buď lpsz
nebo BSTR člen k bstrSrc
m_str
.
HRESULT Append(const CComBSTR& bstrSrc) throw();
HRESULT Append(wchar_t ch) throw();
HRESULT Append(char ch) throw();
HRESULT Append(LPCOLESTR lpsz) throw();
HRESULT Append(LPCSTR lpsz) throw();
HRESULT Append(LPCOLESTR lpsz, int nLen) throw();
Parametry
bstrSrc
[v] Objekt CComBSTR
, který se má připojit.
ch
[v] Znak, který se má připojit.
lpsz
[v] Řetězec znaku s nulovým ukončením, který se má připojit. Řetězec Unicode můžete předat přetížením LPCOLESTR
nebo řetězcem ANSI prostřednictvím LPCSTR
verze.
nLen
[v] Počet znaků od lpsz
připojení.
Návratová hodnota
S_OK
při úspěchu nebo jakékoli standardní HRESULT
chybové hodnotě.
Poznámky
Před připojením se řetězec ANSI převede na Unicode.
Příklad
enum { urlASP, urlHTM, urlISAPI } urlType;
urlType = urlASP;
CComBSTR bstrURL = OLESTR("http://SomeSite/");
CComBSTR bstrDEF = OLESTR("/OtherSite");
CComBSTR bstrASP = OLESTR("default.asp");
CComBSTR bstrTemp;
HRESULT hr;
switch (urlType)
{
case urlASP:
// bstrURL is 'http://SomeSite/default.asp'
hr = bstrURL.Append(bstrASP);
break;
case urlHTM:
// bstrURL is 'http://SomeSite/default.htm'
hr = bstrURL.Append(OLESTR("default.htm"));
break;
case urlISAPI:
// bstrURL is 'http://SomeSite/default.dll?func'
hr = bstrURL.Append(OLESTR("default.dll?func"));
break;
default:
// bstrTemp is 'http://'
hr = bstrTemp.Append(bstrURL, 7);
// bstrURL is 'http://OtherSite'
if (hr == S_OK)
hr = bstrTemp.Append(bstrDEF);
bstrURL = bstrTemp;
break;
}
CComBSTR::AppendBSTR
Připojí zadanou BSTR
k m_str
.
HRESULT AppendBSTR(BSTR p) throw();
Parametry
p
[v] A BSTR
pro připojení.
Návratová hodnota
S_OK
při úspěchu nebo jakékoli standardní HRESULT
chybové hodnotě.
Poznámky
Do této metody nepředávejte běžný řetězec širokého znaku. Kompilátor nemůže zachytit chybu a dojde k chybám za běhu.
Příklad
CComBSTR bstrPre(OLESTR("Hello "));
CComBSTR bstrSuf(OLESTR("World!"));
HRESULT hr;
// Appends "World!" to "Hello "
hr = bstrPre.AppendBSTR(bstrSuf);
// Displays a message box with text "Hello World!"
::MessageBox(NULL, CW2CT(bstrPre), NULL, MB_OK);
CComBSTR::AppendBytes
Připojí zadaný počet bajtů bez m_str
převodu.
HRESULT AppendBytes(const char* lpsz, int nLen) throw();
Parametry
lpsz
[v] Ukazatel na pole bajtů, které chcete připojit.
p
[v] Počet bajtů, které se mají připojit.
Návratová hodnota
S_OK
při úspěchu nebo jakékoli standardní HRESULT
chybové hodnotě.
Příklad
CComBSTR bstrPre(OLESTR("Hello "));
HRESULT hr;
// Appends "Wo" to "Hello " (4 bytes == 2 characters)
hr = bstrPre.AppendBytes(reinterpret_cast<char*>(OLESTR("World!")), 4);
// Displays a message box with text "Hello Wo"
::MessageBox(NULL, CW2CT(bstrPre), NULL, MB_OK);
CComBSTR::ArrayToBSTR
Uvolní všechny existující řetězce uchovávané v objektu CComBSTR
a pak vytvoří BSTR
z prvního znaku každého prvku v safearray a připojí ho k objektu CComBSTR
.
HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw();
Parametry
pSrc
[v] Safearray obsahující prvky použité k vytvoření řetězce.
Návratová hodnota
S_OK
při úspěchu nebo jakékoli standardní HRESULT
chybové hodnotě.
CComBSTR::AssignBSTR
BSTR
Přiřadí k m_str
.
HRESULT AssignBSTR(const BSTR bstrSrc) throw();
Parametry
bstrSrc
[v] A BSTR přiřadit k aktuálnímu CComBSTR
objektu.
Návratová hodnota
S_OK
při úspěchu nebo jakékoli standardní HRESULT
chybové hodnotě.
CComBSTR::Attach
BSTR
Připojí k objektu CComBSTR
nastavením člena m_str
na src
.
void Attach(BSTR src) throw();
Parametry
src
[v] Připojení BSTR
k objektu.
Poznámky
Do této metody nepředávejte běžný řetězec širokého znaku. Kompilátor nemůže zachytit chybu a dojde k chybám za běhu.
Poznámka:
Tato metoda bude uplatňovat, pokud m_str
není null.
Příklad
// STDMETHOD(BSTRToUpper)(/*[in, out]*/ BSTR bstrConv);
STDMETHODIMP InplaceBSTRToUpper(BSTR bstrConv)
{
// Assign bstrConv to m_str member of CComBSTR
CComBSTR bstrTemp;
bstrTemp.Attach(bstrConv);
// Make sure BSTR is not NULL string
if (!bstrTemp)
return E_POINTER;
// Make string uppercase
HRESULT hr;
hr = bstrTemp.ToUpper();
if (hr != S_OK)
return hr;
// Set m_str to NULL, so the BSTR is not freed
bstrTemp.Detach();
return S_OK;
}
CComBSTR::BSTRToArray
Vytvoří jednorozměrné jednorozměrné bezpečné pole založené na nule, kde každý prvek pole je znak z objektu CComBSTR
.
HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw();
Parametry
ppArray
[ven] Ukazatel na safearray použitý k uložení výsledků funkce.
Návratová hodnota
S_OK
při úspěchu nebo jakékoli standardní HRESULT
chybové hodnotě.
CComBSTR::ByteLength
Vrátí počet bajtů v m_str
, s výjimkou ukončujícího znak null.
unsigned int ByteLength() const throw();
Návratová hodnota
Délka členu m_str
v bajtech.
Poznámky
Vrátí hodnotu 0, pokud m_str
je NULL
.
Příklad
// string with 11 chars (22 bytes)
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.ByteLength();
ATLASSERT(len == 22);
CComBSTR::CComBSTR
Konstruktor Výchozí konstruktor nastaví m_str
člen na NULL
.
CComBSTR() throw();
CComBSTR(const CComBSTR& src);
CComBSTR(REFGUID guid);
CComBSTR(int nSize);
CComBSTR(int nSize, LPCOLESTR sz);
CComBSTR(int nSize, LPCSTR sz);
CComBSTR(LPCOLESTR pSrc);
CComBSTR(LPCSTR pSrc);
CComBSTR(CComBSTR&& src) throw(); // (Visual Studio 2017)
Parametry
nSize
[v] Početznakůch sz
CComBSTR
sz
[v] Řetězec, který chcete zkopírovat. Verze Unicode určuje LPCOLESTR
, verze ANSI určuje LPCSTR.
pSrc
[v] Řetězec, který chcete zkopírovat. Verze Unicode určuje LPCOLESTR
, verze ANSI určuje LPCSTR.
src
[v] Objekt CComBSTR
.
guid
[v] Odkaz na GUID
strukturu.
Poznámky
Konstruktor kopírování se nastaví m_str
na kopii BSTR členu src
. Konstruktor REFGUID
převede identifikátor GUID na řetězec pomocí StringFromGUID2
a uloží výsledek.
Ostatní konstruktory jsou nastaveny m_str
na kopii zadaného řetězce. Pokud předáte hodnotu , nSize
pak se zkopírují pouze nSize
znaky následované ukončovacím znakem null.
CComBSTR
podporuje sémantiku pohybu. Konstruktor přesunutí (konstruktor, který přebírá odkaz rvalue (&&
) k vytvoření nového objektu, který používá stejná podkladová data jako starý objekt, který předáváte jako argument, bez režie při kopírování objektu.
Destruktor uvolní řetězec, na který m_str
odkazuje .
Příklad
CComBSTR bstr1; // BSTR points to NULL
bstr1 = "Bye"; // initialize with assignment operator
// ANSI string is converted to wide char
OLECHAR* str = OLESTR("Bye bye!"); // wide char string of length 5
int len = (int)wcslen(str);
CComBSTR bstr2(len + 1);// unintialized BSTR of length 6
wcsncpy_s(bstr2.m_str, bstr2.Length(), str, len); // copy wide char string to BSTR
CComBSTR bstr3(5, OLESTR("Hello World")); // BSTR containing 'Hello',
// input string is wide char
CComBSTR bstr4(5, "Hello World"); // same as above, input string
// is ANSI
CComBSTR bstr5(OLESTR("Hey there")); // BSTR containing 'Hey there',
// input string is wide char
CComBSTR bstr6("Hey there"); // same as above, input string
// is ANSI
CComBSTR bstr7(bstr6); // copy constructor, bstr7 contains 'Hey there'
CComBSTR::~CComBSTR
Destruktor.
~CComBSTR();
Poznámky
Destruktor uvolní řetězec, na který m_str
odkazuje .
CComBSTR::Copy
Přidělí a vrátí kopii .m_str
BSTR Copy() const throw();
Návratová hodnota
Kopie člena m_str
. Pokud m_str
je NULL
, vrátí NULL
.
Příklad
CComBSTR m_bstrURL; // BSTR representing a URL
// put_URL is the put method for the URL property.
STDMETHOD(put_URL)(BSTR strURL)
{
ATLTRACE(_T("put_URL\n"));
// free existing string in m_bstrURL & make a copy
// of strURL pointed to by m_bstrURL
m_bstrURL = strURL;
return S_OK;
}
// get_URL is the get method for the URL property.
STDMETHOD(get_URL)(BSTR* pstrURL)
{
ATLTRACE(_T("get_URL\n"));
// make a copy of m_bstrURL pointed to by pstrURL
*pstrURL = m_bstrURL.Copy(); // See CComBSTR::CopyTo
return S_OK;
}
CComBSTR::CopyTo
Přidělí a vrátí kopii m_str
prostřednictvím parametru.
HRESULT CopyTo(BSTR* pbstr) throw();
HRESULT CopyTo(VARIANT* pvarDest) throw();
Parametry
pbstr
[ven] Adresa, BSTR
ve které se má vrátit řetězec přidělený touto metodou.
pvarDest
[ven] Adresa, VARIANT
ve které se má vrátit řetězec přidělený touto metodou.
Návratová hodnota
Standardní HRESULT
hodnota označující úspěch nebo selhání kopie.
Poznámky
Po volání této metody bude VARIANT
odkazovat podle pvarDest
typu VT_BSTR
.
Příklad
CComBSTR m_bstrURL; // BSTR representing a URL
// get_URL is the get method for the URL property.
STDMETHOD(get_URL)(BSTR* pstrURL)
{
// Make a copy of m_bstrURL and return it via pstrURL
return m_bstrURL.CopyTo(pstrURL);
}
CComBSTR::Detach
Odpojte m_str
objekt od objektu CComBSTR
a nastaví m_str
na NULL
.
BSTR Detach() throw();
Návratová hodnota
Přidruženo BSTR
k objektu CComBSTR
.
Příklad
// Method which converts bstrIn to uppercase
STDMETHODIMP BSTRToUpper(BSTR bstrIn, BSTR* pbstrOut)
{
if (bstrIn == NULL || pbstrOut == NULL)
return E_POINTER;
// Create a temporary copy of bstrIn
CComBSTR bstrTemp(bstrIn);
if (!bstrTemp)
return E_OUTOFMEMORY;
// Make string uppercase
HRESULT hr;
hr = bstrTemp.ToUpper();
if (hr != S_OK)
return hr;
// Return m_str member of bstrTemp
*pbstrOut = bstrTemp.Detach();
return S_OK;
}
CComBSTR::Empty
Uvolní člena m_str
.
void Empty() throw();
Příklad
CComBSTR bstr(OLESTR("abc"));
// Calls SysFreeString to free the BSTR
bstr.Empty();
ATLASSERT(bstr.Length() == 0);
CComBSTR::Length
Vrátí počet znaků s m_str
výjimkou ukončujícího znaku null.
unsigned int Length() const throw();
Návratová hodnota
Délka člena m_str
.
Příklad
// string with 11 chars
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.Length();
ATLASSERT(len == 11);
CComBSTR::LoadString
Načte prostředek řetězce určený nID
a uloží ho do tohoto objektu.
bool LoadString(HINSTANCE hInst, UINT nID) throw();
bool LoadString(UINT nID) throw();
Parametry
Viz LoadString
v sadě Windows SDK.
Návratová hodnota
Vrátí TRUE
, pokud je řetězec úspěšně načten; v opačném případě vrátí hodnotu FALSE
.
Poznámky
První funkce načte prostředek z modulu, který jste identifikovali prostřednictvím parametru hInst
. Druhá funkce načte zdroj z modulu zdroje přidruženého k objektu -odvozeného CComModule
pro tento projekt.
Příklad
CComBSTR bstrTemp;
// IDS_PROJNAME proj name stored as resource in string table
bstrTemp.LoadString(IDS_PROJNAME);
// the above is equivalent to:
// bstrTemp.LoadString(_Module.m_hInstResource, IDS_PROJNAME);
// display message box w/ proj name as title & text
::MessageBox(NULL, CW2CT(bstrTemp), CW2CT(bstrTemp), MB_OK);
CComBSTR::m_str
Obsahuje přidruženou BSTR
k objektu CComBSTR
.
BSTR m_str;
Příklad
CComBSTR GuidToBSTR(REFGUID guid)
{
// 39 - length of string representation of GUID + 1
CComBSTR b(39);
// Convert GUID to BSTR
// m_str member of CComBSTR is of type BSTR. When BSTR param
// is required, pass the m_str member explicitly or use implicit
// BSTR cast operator.
int nRet = StringFromGUID2(guid, b.m_str, 39);
// Above equivalent to:
// int nRet = StringFromGUID2(guid, b, 39);
// implicit BSTR cast operator used for 2nd param
// Both lines are equivalent to:
// CComBSTR b(guid);
// CComBSTR constructor can convert GUIDs
ATLASSERT(nRet);
return b;
}
CComBSTR::operator BSTR
Přetypuje CComBSTR
objekt na objekt BSTR
.
operator BSTR() const throw();
Poznámky
Umožňuje předávat CComBSTR
objekty funkcím, které mají parametry [in]. BSTR
Příklad
Podívejte se na příklad pro CComBSTR::m_str
.
CComBSTR::operator !
Zkontroluje, zda BSTR
je NULL
řetězec .
bool operator!() const throw();
Návratová hodnota
Vrátí TRUE
, pokud m_str
je NULL
člen ; jinak , FALSE
.
Poznámky
Tento operátor kontroluje NULL
pouze hodnotu, nikoli prázdný řetězec.
Příklad
// STDMETHOD(BSTRToUpper)(/*[in, out]*/ BSTR bstrConv);
STDMETHODIMP InplaceBSTRToUpper(BSTR bstrConv)
{
// Assign bstrConv to m_str member of CComBSTR
CComBSTR bstrTemp;
bstrTemp.Attach(bstrConv);
// Make sure BSTR is not NULL string
if (!bstrTemp)
return E_POINTER;
// Make string uppercase
HRESULT hr;
hr = bstrTemp.ToUpper();
if (hr != S_OK)
return hr;
// Set m_str to NULL, so the BSTR is not freed
bstrTemp.Detach();
return S_OK;
}
CComBSTR::operator !=
Vrátí logický opak .operator ==
bool operator!= (const CComBSTR& bstrSrc) const throw();
bool operator!= (LPCOLESTR pszSrc) const;
bool operator!= (LPCSTR pszSrc) const;
bool operator!= (int nNull) const throw();
Parametry
bstrSrc
[v] Objekt CComBSTR
.
pszSrc
[v] Řetězec ukončený nulou.
nNull
[v] Musí mít hodnotu NULL.
Návratová hodnota
Vrátí TRUE
, pokud porovnávaná položka není rovna objektu CComBSTR
; v opačném případě vrátí hodnotu FALSE
.
Poznámky
CComBSTR
hodnoty se porovnávají textově v kontextu výchozího národního prostředí uživatele. Poslední relační operátor pouze porovná obsažený řetězec s NULL
.
CComBSTR::operator &
Vrátí adresu uloženého BSTR
v členu m_str
.
BSTR* operator&() throw();
Poznámky
CComBstr operator &
obsahuje speciální kontrolní výraz přidružený k tomu, aby pomohl identifikovat nevracení paměti. Program se použije při inicializaci člena m_str
. Tento kontrolní výraz byl vytvořen k identifikaci situací, kdy programátor používá & operator
k přiřazení nové hodnoty členu m_str
bez uvolnění prvního přidělení m_str
. Pokud m_str
se rovná NULL
, program předpokládá, že m_str ještě nebyla přidělena. V tomto případě program nebude uplatňovat.
Tento kontrolní výraz není ve výchozím nastavení povolený. Definujte ATL_CCOMBSTR_ADDRESS_OF_ASSERT
pro povolení tohoto kontrolního výrazu.
Příklad
#define ATL_NO_CCOMBSTR_ADDRESS_OF_ASSERT
void MyInitFunction(BSTR* pbstr)
{
::SysReAllocString(pbstr, OLESTR("Hello World"));
return;
}
CComBSTR bstrStr ;
// bstrStr is not initialized so this call will not assert.
MyInitFunction(&bstrStr);
CComBSTR bstrStr2(OLESTR("Hello World"));
// bstrStr2 is initialized so this call will assert.
::SysReAllocString(&bstrStr2, OLESTR("Bye"));
CComBSTR::operator +=
Připojí řetězec k objektu CComBSTR
.
CComBSTR& operator+= (const CComBSTR& bstrSrc);
CComBSTR& operator+= (const LPCOLESTR pszSrc);
Parametry
bstrSrc
[v] Objekt CComBSTR
, který se má připojit.
pszSrc
[v] Řetězec ukončený nulou, který se má připojit.
Poznámky
CComBSTR
hodnoty se porovnávají textově v kontextu výchozího národního prostředí uživatele. Porovnání LPCOLESTR
se provádí pomocí memcmp
nezpracovaných dat v každém řetězci. Porovnání LPCSTR
se provádí stejným způsobem, jakmile se vytvoří dočasná kopie pszSrc
unicode. Poslední relační operátor pouze porovná obsažený řetězec s NULL
.
Příklad
CComBSTR bstrPre(OLESTR("Hello "));
CComBSTR bstrSuf(OLESTR("World!"));
// Appends "World!" to "Hello "
bstrPre += bstrSuf;
// Displays a message box with text "Hello World!"
::MessageBox(NULL, CW2CT(bstrPre), NULL, MB_OK);
CComBSTR::operator <
CComBSTR
Porovná řetězec.
bool operator<(const CComBSTR& bstrSrc) const throw();
bool operator<(LPCOLESTR pszSrc) const throw();
bool operator<(LPCSTR pszSrc) const throw();
Návratová hodnota
Vrátí TRUE
, pokud je porovnávaná položka menší než CComBSTR
objekt; v opačném případě vrátí hodnotu FALSE
.
Poznámky
Porovnání se provádí pomocí výchozího národního prostředí uživatele.
CComBSTR::operator =
Nastaví člena m_str
na kopii pSrc
nebo na kopii BSTR
člena src
. Operátor přiřazení přesunutí se přesune src
, aniž by ho zkopíroval.
CComBSTR& operator= (const CComBSTR& src);
CComBSTR& operator= (LPCOLESTR pSrc);
CComBSTR& operator= (LPCSTR pSrc);
CComBSTR& operator= (CComBSTR&& src) throw(); // (Visual Studio 2017)
Poznámky
Parametr pSrc
určuje LPCOLESTR
buď pro verze Unicode, nebo LPCSTR
pro verze ANSI.
Příklad
Podívejte se na příklad pro CComBSTR::Copy
.
CComBSTR::operator ==
CComBSTR
Porovná řetězec. CComBSTR
hodnoty se porovnávají textově v kontextu výchozího národního prostředí uživatele.
bool operator== (const CComBSTR& bstrSrc) const throw();
bool operator== (LPCOLESTR pszSrc) const;
bool operator== (LPCSTR pszSrc) const;
bool operator== (int nNull) const throw();
Parametry
bstrSrc
[v] Objekt CComBSTR
.
pszSrc
[v] Řetězec ukončený nulou.
nNull
[v] Musí být NULL
.
Návratová hodnota
Vrátí TRUE
, pokud se porovnávaná položka rovná objektu CComBSTR
; v opačném případě vrátí hodnotu FALSE
.
Poznámky
Poslední relační operátor pouze porovná obsažený řetězec s NULL
.
CComBSTR::operator >
CComBSTR
Porovná řetězec.
bool operator>(const CComBSTR& bstrSrc) const throw();
Návratová hodnota
Vrátí TRUE
, pokud je porovnávaná položka větší než CComBSTR
objekt; v opačném případě vrátí hodnotu FALSE
.
Poznámky
Porovnání se provádí pomocí výchozího národního prostředí uživatele.
CComBSTR::ReadFromStream
m_str
Nastaví člena BSTR
na obsažený v zadaném datovém proudu.
HRESULT ReadFromStream(IStream* pStream) throw();
Parametry
pStream
[v] Ukazatel na IStream
rozhraní datového proudu obsahujícího data.
Návratová hodnota
Standardní HRESULT
hodnota.
Poznámky
ReadToStream
vyžaduje, aby obsah datového proudu na aktuální pozici byl kompatibilní s formátem dat zapsaným voláním WriteToStream
.
Příklad
IDataObject* pDataObj;
// Fill in the FORMATETC struct to retrieve desired format
// from clipboard
FORMATETC formatetcIn = {CF_TEXT, NULL, DVASPECT_CONTENT, -1, TYMED_ISTREAM};
STGMEDIUM medium;
ZeroMemory(&medium, sizeof(STGMEDIUM));
// Get IDataObject from clipboard
HRESULT hr = ::OleGetClipboard(&pDataObj);
// Retrieve data from clipboard
hr = pDataObj->GetData(&formatetcIn, &medium);
if (SUCCEEDED(hr) && medium.tymed == TYMED_ISTREAM)
{
CComBSTR bstrStr;
// Get BSTR out of the stream
hr = bstrStr.ReadFromStream(medium.pstm);
//release the stream
::ReleaseStgMedium(&medium);
}
CComBSTR::ToLower
Převede obsažený řetězec na malá písmena.
HRESULT ToLower() throw();
Návratová hodnota
Standardní HRESULT
hodnota.
Poznámky
Další CharLowerBuff
informace o tom, jak se převod provádí.
CComBSTR::ToUpper
Převede obsažený řetězec na velká písmena.
HRESULT ToUpper() throw();
Návratová hodnota
Standardní HRESULT
hodnota.
Poznámky
Další CharUpperBuff
informace o tom, jak se převod provádí.
CComBSTR::WriteToStream
Uloží člena m_str
do datového proudu.
HRESULT WriteToStream(IStream* pStream) throw();
Parametry
pStream
[v] Ukazatel na IStream
rozhraní ve streamu.
Návratová hodnota
Standardní HRESULT
hodnota.
Poznámky
Pomocí funkce můžete znovu vytvořit BSTR
obsah datového proudu ReadFromStream
.
Příklad
//implementation of IDataObject::GetData()
STDMETHODIMP CMyDataObj::GetData(FORMATETC *pformatetcIn, STGMEDIUM *pmedium)
{
HRESULT hr = S_OK;
if (pformatetcIn->cfFormat == CF_TEXT && pformatetcIn->tymed == TYMED_ISTREAM)
{
IStream *pStm;
// Create an IStream from global memory
hr = CreateStreamOnHGlobal(NULL, TRUE, &pStm);
if (FAILED(hr))
return hr;
// Initialize CComBSTR
CComBSTR bstrStr = OLESTR("Hello World");
// Serialize string into stream
// the length followed by actual string is serialized into stream
hr = bstrStr.WriteToStream(pStm);
// Pass the IStream pointer back through STGMEDIUM struct
pmedium->tymed = TYMED_ISTREAM;
pmedium->pstm = pStm;
pmedium->pUnkForRelease = NULL;
}
return hr;
}