Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze klasse is een wrapper voor BSTRs.
Syntaxis
class CComBSTR
Leden
Openbare constructors
| Naam | Description |
|---|---|
CComBSTR::CComBSTR |
De constructor. |
CComBSTR::~CComBSTR |
De destructor. |
Openbare methoden
| Naam | Description |
|---|---|
CComBSTR::Append |
Voegt een tekenreeks toe aan m_str. |
CComBSTR::AppendBSTR |
Voegt een BSTR aan m_str. |
CComBSTR::AppendBytes |
Voegt een opgegeven aantal bytes toe aan m_str. |
CComBSTR::ArrayToBSTR |
Hiermee maakt u een BSTR van het eerste teken van elk element in de safearray en koppelt u het aan het CComBSTR object. |
CComBSTR::AssignBSTR |
Hiermee wijst u een BSTR toe aan m_str. |
CComBSTR::Attach |
Hiermee wordt een BSTR aan het CComBSTR object gekoppeld. |
CComBSTR::BSTRToArray |
Hiermee maakt u een eendimensionale veilige matrix op basis van nul, waarbij elk element van de matrix een teken van het CComBSTR object is. |
CComBSTR::ByteLength |
Retourneert de lengte van m_str in bytes. |
CComBSTR::Copy |
Retourneert een kopie van m_str. |
CComBSTR::CopyTo |
Retourneert een kopie van m_str via een [out] parameter |
CComBSTR::Detach |
Loskoppelt m_str van het CComBSTR object. |
CComBSTR::Empty |
Gratis .m_str |
CComBSTR::Length |
Geeft als resultaat de lengte van m_str. |
CComBSTR::LoadString |
Laadt een tekenreeksresource. |
CComBSTR::ReadFromStream |
Laadt een BSTR object uit een stroom. |
CComBSTR::ToLower |
Converteert de tekenreeks naar kleine letters. |
CComBSTR::ToUpper |
Converteert de tekenreeks naar hoofdletters. |
CComBSTR::WriteToStream |
Wordt opgeslagen m_str in een stream. |
Openbare operators
| Naam | Description |
|---|---|
CComBSTR::operator BSTR |
Cast een CComBSTR object naar een BSTR. |
CComBSTR::operator ! |
Retourneert WAAR of ONWAAR, afhankelijk van of m_str null is. |
CComBSTR::operator != |
Vergelijkt een CComBSTR met een tekenreeks. |
CComBSTR::operator & |
Retourneert het adres van m_str. |
CComBSTR::operator += |
Voegt een CComBSTR aan het object toe. |
CComBSTR::operator < |
Vergelijkt een CComBSTR met een tekenreeks. |
CComBSTR::operator = |
Hiermee wordt een waarde toegewezen aan m_str. |
CComBSTR::operator == |
Vergelijkt een CComBSTR met een tekenreeks. |
CComBSTR::operator > |
Vergelijkt een CComBSTR met een tekenreeks. |
Publieke dataleden
| Naam | Description |
|---|---|
CComBSTR::m_str |
Bevat de BSTR gekoppelde aan het CComBSTR object. |
Opmerkingen
De klasse is een wrapper voor BSTRs. Dit CComBSTR zijn tekenreeksen met een lengtevoorvoegsel. De lengte wordt opgeslagen als een geheel getal op de geheugenlocatie voorafgaand aan de gegevens in de tekenreeks.
A BSTR is null-beëindigd na het laatste getelde teken, maar kan ook null-tekens bevatten die zijn ingesloten in de tekenreeks. De tekenreekslengte wordt bepaald door het aantal tekens, niet het eerste null-teken.
Opmerking
De CComBSTR klasse biedt een aantal leden (constructors, toewijzingsoperatoren en vergelijkingsoperatoren) die ANSI- of Unicode-tekenreeksen als argumenten gebruiken. De ANSI-versies van deze functies zijn minder efficiënt dan hun Unicode-tegenhangers, omdat tijdelijke Unicode-tekenreeksen vaak intern worden gemaakt. Gebruik waar mogelijk de Unicode-versies voor efficiëntie.
Opmerking
Vanwege het verbeterde opzoekgedrag dat is geïmplementeerd in Visual Studio .NET, moet code zoals bstr = L"String2" + bstr;, die mogelijk in eerdere releases is gecompileerd, in plaats daarvan worden geïmplementeerd als bstr = CStringW(L"String2") + bstr.
Zie Programmeren met CComBSTRvoor een lijst met waarschuwingen bij het gebruikCComBSTR.
Requirements
Rubriek:atlbase.h
CComBSTR::Append
Voegt een lpsz of het BSTR-lid toe bstrSrc aan 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();
Parameterwaarden
bstrSrc
[in] Een CComBSTR object dat moet worden toegevoegd.
ch
[in] Een teken dat moet worden toegevoegd.
lpsz
[in] Een tekenreeks zonder einde die moet worden toegevoegd. U kunt een Unicode-tekenreeks doorgeven via de LPCOLESTR overbelasting of een ANSI-tekenreeks via de LPCSTR versie.
nLen
[in] Het aantal tekens dat lpsz moet worden toegevoegd.
Retourwaarde
S_OK bij succes of een standaardfoutwaarde HRESULT .
Opmerkingen
Een ANSI-tekenreeks wordt geconverteerd naar Unicode voordat deze wordt toegevoegd.
Example
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
Voegt de opgegeven BSTR waarde toe aan m_str.
HRESULT AppendBSTR(BSTR p) throw();
Parameterwaarden
p
[in] Een BSTR om toe te voegen.
Retourwaarde
S_OK bij succes of een standaardfoutwaarde HRESULT .
Opmerkingen
Geef geen gewone tekenreeks voor breed teken door aan deze methode. De compiler kan de fout niet ondervangen en runtimefouten treden op.
Example
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
Voegt het opgegeven aantal bytes toe aan m_str zonder conversie.
HRESULT AppendBytes(const char* lpsz, int nLen) throw();
Parameterwaarden
lpsz
[in] Een aanwijzer naar een matrix van bytes die moet worden toegevoegd.
p
[in] Het aantal bytes dat moet worden toegevoegd.
Retourwaarde
S_OK bij succes of een standaardfoutwaarde HRESULT .
Example
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
Maakt een bestaande tekenreeks in het CComBSTR object vrij en maakt vervolgens een BSTR van het eerste teken van elk element in de safearray en koppelt deze aan het CComBSTR object.
HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw();
Parameterwaarden
pSrc
[in] De veilige matrix met de elementen die worden gebruikt om de tekenreeks te maken.
Retourwaarde
S_OK bij succes of een standaardfoutwaarde HRESULT .
CComBSTR::AssignBSTR
Hiermee wijst u een BSTR toe aan m_str.
HRESULT AssignBSTR(const BSTR bstrSrc) throw();
Parameterwaarden
bstrSrc
[in] Een BSTR die moet worden toegewezen aan het huidige CComBSTR object.
Retourwaarde
S_OK bij succes of een standaardfoutwaarde HRESULT .
CComBSTR::Attach
Hiermee wordt een BSTR aan het CComBSTR object gekoppeld door het m_str lid in te stellen op src.
void Attach(BSTR src) throw();
Parameterwaarden
src
[in] De BSTR te koppelen aan het object.
Opmerkingen
Geef geen gewone tekenreeks voor breed teken door aan deze methode. De compiler kan de fout niet ondervangen en runtimefouten treden op.
Opmerking
Met deze methode wordt opgegeven of m_str dit niet null is.
Example
// 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
Hiermee maakt u een eendimensionale veilige matrix op basis van nul, waarbij elk element van de matrix een teken van het CComBSTR object is.
HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw();
Parameterwaarden
ppArray
[uit] De aanwijzer naar de veiligearray die wordt gebruikt om de resultaten van de functie vast te houden.
Retourwaarde
S_OK bij succes of een standaardfoutwaarde HRESULT .
CComBSTR::ByteLength
Retourneert het aantal bytes in m_str, met uitzondering van het null-teken dat eindigt.
unsigned int ByteLength() const throw();
Retourwaarde
De lengte van het m_str lid in bytes.
Opmerkingen
Retourneert 0 als m_str dat het is NULL.
Example
// string with 11 chars (22 bytes)
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.ByteLength();
ATLASSERT(len == 22);
CComBSTR::CComBSTR
De constructor. De standaardconstructor stelt het m_str lid in op 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)
Parameterwaarden
nSize
[in] Het aantal tekens dat moet worden gekopieerd van sz of de oorspronkelijke grootte in tekens voor de CComBSTR.
sz
[in] Een tekenreeks die moet worden gekopieerd. De Unicode-versie geeft een LPCOLESTR; de ANSI-versie geeft een LPCSTR.
pSrc
[in] Een tekenreeks die moet worden gekopieerd. De Unicode-versie geeft een LPCOLESTR; de ANSI-versie geeft een LPCSTR.
src
[in] Een CComBSTR object.
guid
[in] Een verwijzing naar een GUID structuur.
Opmerkingen
De kopieerconstructor stelt m_str een kopie van het BSTR-lid van src. De REFGUID constructor converteert de GUID naar een tekenreeks met behulp van StringFromGUID2 het resultaat en slaat het resultaat op.
De andere constructors zijn ingesteld m_str op een kopie van de opgegeven tekenreeks. Als u een waarde doorgeeft voor nSize, worden alleen nSize tekens gekopieerd, gevolgd door een eind-null-teken.
CComBSTR ondersteunt verplaatsingssemantiek. U kunt de verplaatsingsconstructor (de constructor die een rvalue-verwijzing (&&) gebruikt om een nieuw object te maken dat dezelfde onderliggende gegevens gebruikt als het oude object dat u als argument doorgeeft, zonder dat het object wordt gekopieerd.
De destructor verlost de tekenreeks die door m_str.
Example
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
De destructor.
~CComBSTR();
Opmerkingen
De destructor verlost de tekenreeks die door m_str.
CComBSTR::Copy
Wijst een kopie van m_strtoe en retourneert deze.
BSTR Copy() const throw();
Retourwaarde
Een kopie van het m_str lid. Als m_str dat het is NULL, retourneert NULL.
Example
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
Wijst een kopie toe m_str en retourneert deze via de parameter.
HRESULT CopyTo(BSTR* pbstr) throw();
HRESULT CopyTo(VARIANT* pvarDest) throw();
Parameterwaarden
pbstr
[uit] Het adres van een BSTR waarin de tekenreeks moet worden geretourneerd die door deze methode is toegewezen.
pvarDest
[uit] Het adres van een VARIANT waarin de tekenreeks moet worden geretourneerd die door deze methode is toegewezen.
Retourwaarde
Een standaardwaarde HRESULT die aangeeft dat de kopie is geslaagd of mislukt.
Opmerkingen
Nadat u deze methode hebt aangeroepen, is de VARIANT punt waarop pvarDest wordt verwezen van het type VT_BSTR.
Example
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
Loskoppelt m_str van het CComBSTR object en stelt in m_str op NULL.
BSTR Detach() throw();
Retourwaarde
De BSTR gekoppelde aan het CComBSTR object.
Example
// 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
Hiermee wordt het m_str lid vrijgemaakt.
void Empty() throw();
Example
CComBSTR bstr(OLESTR("abc"));
// Calls SysFreeString to free the BSTR
bstr.Empty();
ATLASSERT(bstr.Length() == 0);
CComBSTR::Length
Retourneert het aantal tekens in m_str, met uitzondering van het null-teken dat eindigt.
unsigned int Length() const throw();
Retourwaarde
De lengte van het m_str lid.
Example
// string with 11 chars
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.Length();
ATLASSERT(len == 11);
CComBSTR::LoadString
Hiermee wordt een tekenreeksresource geladen die is opgegeven door nID en opgeslagen in dit object.
bool LoadString(HINSTANCE hInst, UINT nID) throw();
bool LoadString(UINT nID) throw();
Parameterwaarden
Zie LoadString in de Windows SDK.
Retourwaarde
Retourneert TRUE als de tekenreeks is geladen; anders wordt geretourneerd FALSE.
Opmerkingen
De eerste functie laadt de resource uit de module die u hebt geïdentificeerd via de hInst parameter. Met de tweede functie wordt de resource uit de resourcemodule geladen die is gekoppeld aan het CComModule-afgeleide object dat in dit project wordt gebruikt.
Example
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
Bevat de BSTR gekoppelde aan het CComBSTR object.
BSTR m_str;
Example
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
Cast een CComBSTR object naar een BSTR.
operator BSTR() const throw();
Opmerkingen
Hiermee kunt u objecten doorgeven CComBSTR aan functies met [in] BSTR -parameters.
Example
Zie het voorbeeld voor CComBSTR::m_str.
CComBSTR::operator !
Controleert of BSTR tekenreeks is NULL.
bool operator!() const throw();
Retourwaarde
Retourneert TRUE als het m_str lid isNULL; anders. FALSE
Opmerkingen
Deze operator controleert alleen op een NULL waarde, niet op een lege tekenreeks.
Example
// 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 !=
Retourneert het logische tegenovergestelde van operator ==.
bool operator!= (const CComBSTR& bstrSrc) const throw();
bool operator!= (LPCOLESTR pszSrc) const;
bool operator!= (LPCSTR pszSrc) const;
bool operator!= (int nNull) const throw();
Parameterwaarden
bstrSrc
[in] Een CComBSTR object.
pszSrc
[in] Een tekenreeks die nul is beëindigd.
nNull
[in] Moet NULL zijn.
Retourwaarde
Retourneert TRUE als het item dat wordt vergeleken niet gelijk is aan het CComBSTR object; anders wordt geretourneerd FALSE.
Opmerkingen
CComBSTRs worden tekst vergeleken in de context van de standaardlandinstelling van de gebruiker. De laatste vergelijkingsoperator vergelijkt alleen de ingesloten tekenreeks met NULL.
CComBSTR::operator &
Retourneert het adres van het BSTR opgeslagen in het m_str lid.
BSTR* operator&() throw();
Opmerkingen
CComBstr operator & heeft een speciale verklaring die eraan is gekoppeld om geheugenlekken te identificeren. Het programma bevestigt wanneer het m_str lid wordt geïnitialiseerd. Deze bewering is gemaakt om situaties te identificeren waarin een programmeur een & operator nieuwe waarde m_str aan lid toewijst zonder de eerste toewijzing van m_str. Als m_str dit gelijk is NULLaan, gaat het programma ervan uit dat m_str nog niet is toegewezen. In dit geval wordt het programma niet assertieer.
Deze bewering is niet standaard ingeschakeld. Definieer ATL_CCOMBSTR_ADDRESS_OF_ASSERT dit om deze bewering in te schakelen.
Example
#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 +=
Voegt een tekenreeks toe aan het CComBSTR object.
CComBSTR& operator+= (const CComBSTR& bstrSrc);
CComBSTR& operator+= (const LPCOLESTR pszSrc);
Parameterwaarden
bstrSrc
[in] Een CComBSTR object dat moet worden toegevoegd.
pszSrc
[in] Een door nul beëindigde tekenreeks die moet worden toegevoegd.
Opmerkingen
CComBSTRs worden tekst vergeleken in de context van de standaardlandinstelling van de gebruiker. De LPCOLESTR vergelijking wordt uitgevoerd met behulp van memcmp de onbewerkte gegevens in elke tekenreeks. De LPCSTR vergelijking wordt op dezelfde manier uitgevoerd zodra er een tijdelijke Unicode-kopie van pszSrc is gemaakt. De laatste vergelijkingsoperator vergelijkt alleen de ingesloten tekenreeks met NULL.
Example
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 <
Vergelijkt een CComBSTR met een tekenreeks.
bool operator<(const CComBSTR& bstrSrc) const throw();
bool operator<(LPCOLESTR pszSrc) const throw();
bool operator<(LPCSTR pszSrc) const throw();
Retourwaarde
Retourneert TRUE als het item dat wordt vergeleken kleiner is dan het CComBSTR object; anders wordt geretourneerd FALSE.
Opmerkingen
De vergelijking wordt uitgevoerd met behulp van de standaardlandinstelling van de gebruiker.
CComBSTR::operator =
Hiermee stelt u het m_str lid in op een kopie van pSrc of op een kopie van het BSTR lid van src. De verplaatsingstoewijzingsoperator wordt verplaatst src zonder deze te kopiëren.
CComBSTR& operator= (const CComBSTR& src);
CComBSTR& operator= (LPCOLESTR pSrc);
CComBSTR& operator= (LPCSTR pSrc);
CComBSTR& operator= (CComBSTR&& src) throw(); // (Visual Studio 2017)
Opmerkingen
De pSrc parameter geeft een LPCOLESTR voor Unicode-versies of LPCSTR voor ANSI-versies op.
Example
Zie het voorbeeld voor CComBSTR::Copy.
CComBSTR::operator ==
Vergelijkt een CComBSTR met een tekenreeks.
CComBSTRs worden tekst vergeleken in de context van de standaardlandinstelling van de gebruiker.
bool operator== (const CComBSTR& bstrSrc) const throw();
bool operator== (LPCOLESTR pszSrc) const;
bool operator== (LPCSTR pszSrc) const;
bool operator== (int nNull) const throw();
Parameterwaarden
bstrSrc
[in] Een CComBSTR object.
pszSrc
[in] Een tekenreeks die nul is beëindigd.
nNull
[in] Moet zijn NULL.
Retourwaarde
Retourneert TRUE als het item dat wordt vergeleken gelijk is aan het CComBSTR object; anders wordt geretourneerd FALSE.
Opmerkingen
De laatste vergelijkingsoperator vergelijkt alleen de ingesloten tekenreeks met NULL.
CComBSTR::operator >
Vergelijkt een CComBSTR met een tekenreeks.
bool operator>(const CComBSTR& bstrSrc) const throw();
Retourwaarde
Retourneert TRUE als het item dat wordt vergeleken groter is dan het CComBSTR object; anders wordt geretourneerd FALSE.
Opmerkingen
De vergelijking wordt uitgevoerd met behulp van de standaardlandinstelling van de gebruiker.
CComBSTR::ReadFromStream
Hiermee stelt u het m_str lid in op de BSTR opgenomen in de opgegeven stroom.
HRESULT ReadFromStream(IStream* pStream) throw();
Parameterwaarden
pStream
[in] Een aanwijzer naar de IStream interface op de stream die de gegevens bevat.
Retourwaarde
Een standaardwaarde HRESULT .
Opmerkingen
ReadToStream vereist dat de inhoud van de stream op de huidige positie compatibel is met de gegevensindeling die is geschreven door een aanroep naar WriteToStream.
Example
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
Converteert de ingesloten tekenreeks naar kleine letters.
HRESULT ToLower() throw();
Retourwaarde
Een standaardwaarde HRESULT .
Opmerkingen
Zie CharLowerBuff voor meer informatie over hoe de conversie wordt uitgevoerd.
CComBSTR::ToUpper
Converteert de ingesloten tekenreeks naar hoofdletters.
HRESULT ToUpper() throw();
Retourwaarde
Een standaardwaarde HRESULT .
Opmerkingen
Zie CharUpperBuff voor meer informatie over hoe de conversie wordt uitgevoerd.
CComBSTR::WriteToStream
Slaat het m_str lid op in een stream.
HRESULT WriteToStream(IStream* pStream) throw();
Parameterwaarden
pStream
[in] Een aanwijzer naar de IStream interface in een stream.
Retourwaarde
Een standaardwaarde HRESULT .
Opmerkingen
U kunt een nieuwe maken BSTR op basis van de inhoud van de stream met behulp van de ReadFromStream functie.
Example
//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;
}
Zie ook
Overzicht van klassen
Macro's voor ATL- en MFC-tekenreeksconversie