CComBSTR
Klasa
Ta klasa jest otoką dla BSTR
s.
Składnia
class CComBSTR
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CComBSTR::CComBSTR |
Konstruktor. |
CComBSTR::~CComBSTR |
Destruktora. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CComBSTR::Append |
Dołącza ciąg do m_str . |
CComBSTR::AppendBSTR |
Dołącza element BSTR do m_str . |
CComBSTR::AppendBytes |
Dołącza określoną liczbę bajtów do m_str . |
CComBSTR::ArrayToBSTR |
Tworzy element BSTR na podstawie pierwszego znaku każdego elementu w safearray i dołącza go do CComBSTR obiektu. |
CComBSTR::AssignBSTR |
Przypisuje element BSTR do m_str . |
CComBSTR::Attach |
Dołącza obiekt BSTR do CComBSTR obiektu . |
CComBSTR::BSTRToArray |
Tworzy jednowymiarową bezpieczną tablicę opartą na zera, gdzie każdy element tablicy jest znakiem z CComBSTR obiektu. |
CComBSTR::ByteLength |
Zwraca długość bajtów m_str . |
CComBSTR::Copy |
Zwraca kopię elementu m_str . |
CComBSTR::CopyTo |
Zwraca kopię m_str elementu za pomocą parametru [out] |
CComBSTR::Detach |
Odłącza m_str się od CComBSTR obiektu. |
CComBSTR::Empty |
m_str Zwalnia . |
CComBSTR::Length |
Zwraca długość m_str . |
CComBSTR::LoadString |
Ładuje zasób ciągu. |
CComBSTR::ReadFromStream |
BSTR Ładuje obiekt ze strumienia. |
CComBSTR::ToLower |
Konwertuje ciąg na małe litery. |
CComBSTR::ToUpper |
Konwertuje ciąg na wielkie litery. |
CComBSTR::WriteToStream |
m_str Zapisuje w strumieniu. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CComBSTR::operator BSTR |
Rzutuje CComBSTR obiekt na obiekt BSTR. |
CComBSTR::operator ! |
Zwraca wartość TRUE lub FALSE, w zależności od tego, czy m_str ma wartość NULL. |
CComBSTR::operator != |
Porównuje element CComBSTR z ciągiem. |
CComBSTR::operator & |
Zwraca adres m_str . |
CComBSTR::operator += |
Dołącza obiekt CComBSTR do obiektu . |
CComBSTR::operator < |
Porównuje element CComBSTR z ciągiem. |
CComBSTR::operator = |
Przypisuje wartość do m_str . |
CComBSTR::operator == |
Porównuje element CComBSTR z ciągiem. |
CComBSTR::operator > |
Porównuje element CComBSTR z ciągiem. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CComBSTR::m_str |
BSTR Zawiera obiekt skojarzony z obiektem CComBSTR . |
Uwagi
Klasa CComBSTR
jest otoką dla BSTR
s, które są ciągami z prefiksami długości. Długość jest przechowywana jako liczba całkowita w lokalizacji pamięci poprzedzających dane w ciągu.
Element BSTR
jest zakończony wartością null po ostatnim zliczonym znaku, ale może również zawierać znaki null osadzone w ciągu. Długość ciągu jest określana przez liczbę znaków, a nie pierwszy znak null.
Uwaga
Klasa CComBSTR
udostępnia wiele elementów członkowskich (konstruktorów, operatorów przypisania i operatorów porównania), które przyjmują ciągi ANSI lub Unicode jako argumenty. Wersje anSI tych funkcji są mniej wydajne niż ich odpowiedniki Unicode, ponieważ tymczasowe ciągi Unicode są często tworzone wewnętrznie. W celu zwiększenia wydajności użyj wersji Unicode tam, gdzie to możliwe.
Uwaga
Ze względu na ulepszone zachowanie wyszukiwania zaimplementowane w programie Visual Studio .NET kod, taki jak bstr = L"String2" + bstr;
, który mógł zostać skompilowany w poprzednich wersjach, powinien zostać zaimplementowany jako bstr = CStringW(L"String2") + bstr
.
Aby uzyskać listę ostrzeżeń podczas korzystania z programu , zobacz Programowanie za pomocąCComBSTR
CComBSTR
programu .
Wymagania
Nagłówek: atlbase.h
CComBSTR::Append
Dołącza element członkowski lpsz
BSTR bstrSrc
do m_str
elementu .
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
[in] Obiekt CComBSTR
do dołączenia.
ch
[in] Znak do dołączenia.
lpsz
[in] Ciąg znaków bez zakończenia do dołączenia. Ciąg Unicode można przekazać za pośrednictwem LPCOLESTR
przeciążenia lub ciągu ANSI za pośrednictwem LPCSTR
wersji.
nLen
[in] Liczba znaków z lpsz
do dołączenia.
Wartość zwracana
S_OK
w przypadku powodzenia lub dowolnej standardowej HRESULT
wartości błędu.
Uwagi
Przed dołączeniem ciąg ANSI zostanie przekonwertowany na Unicode.
Przykład
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
Dołącza określony BSTR
element do m_str
elementu .
HRESULT AppendBSTR(BSTR p) throw();
Parametry
p
[in] A BSTR
do dołączenia.
Wartość zwracana
S_OK
w przypadku powodzenia lub dowolnej standardowej HRESULT
wartości błędu.
Uwagi
Nie przekazuj zwykłego ciągu o szerokim znaku do tej metody. Kompilator nie może przechwycić błędu i wystąpią błędy czasu wykonywania.
Przykład
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
Dołącza określoną liczbę bajtów do m_str
bez konwersji.
HRESULT AppendBytes(const char* lpsz, int nLen) throw();
Parametry
lpsz
[in] Wskaźnik do dołączenia tablicy bajtów.
p
[in] Liczba bajtów do dołączenia.
Wartość zwracana
S_OK
w przypadku powodzenia lub dowolnej standardowej HRESULT
wartości błędu.
Przykład
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
Zwalnia wszystkie istniejące ciągi przechowywane w CComBSTR
obiekcie, a następnie tworzy element BSTR
na podstawie pierwszego znaku każdego elementu w safearray i dołącza go do CComBSTR
obiektu.
HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw();
Parametry
pSrc
[in] Safearray zawierające elementy użyte do utworzenia ciągu.
Wartość zwracana
S_OK
w przypadku powodzenia lub dowolnej standardowej HRESULT
wartości błędu.
CComBSTR::AssignBSTR
Przypisuje element BSTR
do m_str
.
HRESULT AssignBSTR(const BSTR bstrSrc) throw();
Parametry
bstrSrc
[in] A BSTR do przypisania do bieżącego CComBSTR
obiektu.
Wartość zwracana
S_OK
w przypadku powodzenia lub dowolnej standardowej HRESULT
wartości błędu.
CComBSTR::Attach
BSTR
Dołącza obiekt do CComBSTR
obiektu, ustawiając element członkowski m_str
na src
.
void Attach(BSTR src) throw();
Parametry
src
[in] Element BSTR
do dołączenia do obiektu.
Uwagi
Nie przekazuj zwykłego ciągu o szerokim znaku do tej metody. Kompilator nie może przechwycić błędu i wystąpią błędy czasu wykonywania.
Uwaga
Ta metoda będzie potwierdzać, czy m_str
nie ma wartości NULL.
Przykład
// 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
Tworzy jednowymiarową bezpieczną tablicę opartą na zera, gdzie każdy element tablicy jest znakiem z CComBSTR
obiektu.
HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw();
Parametry
ppArray
[out] Wskaźnik do bezpiecznejarray używanej do przechowywania wyników funkcji.
Wartość zwracana
S_OK
w przypadku powodzenia lub dowolnej standardowej HRESULT
wartości błędu.
CComBSTR::ByteLength
Zwraca liczbę bajtów w m_str
obiekcie z wyłączeniem znaku null zakończenia.
unsigned int ByteLength() const throw();
Wartość zwracana
Długość m_str
elementu członkowskiego w bajtach.
Uwagi
Zwraca wartość 0, jeśli m_str
ma wartość NULL
.
Przykład
// string with 11 chars (22 bytes)
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.ByteLength();
ATLASSERT(len == 22);
CComBSTR::CComBSTR
Konstruktor. Domyślny konstruktor ustawia element członkowski m_str
na NULL
wartość .
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
[in] Liczba znaków do skopiowania z sz
lub początkowego rozmiaru znaków w znakach CComBSTR
.
sz
[in] Ciąg do skopiowania. Wersja Unicode określa LPCOLESTR
; wersja ANSI określa LPCSTR.
pSrc
[in] Ciąg do skopiowania. Wersja Unicode określa LPCOLESTR
; wersja ANSI określa LPCSTR.
src
[in] CComBSTR
Obiekt.
guid
[in] Odwołanie do GUID
struktury.
Uwagi
Konstruktor kopiowania ustawia m_str
kopię elementu członkowskiego BSTR elementu src
. Konstruktor REFGUID
konwertuje identyfikator GUID na ciąg przy użyciu metody StringFromGUID2
i zapisuje wynik.
Inne konstruktory ustawione m_str
na kopię określonego ciągu. Jeśli przekażesz wartość parametru nSize
, zostaną skopiowane tylko nSize
znaki, a następnie znak null zakończenia.
CComBSTR
obsługuje semantyka przenoszenia. Można użyć konstruktora przenoszenia (konstruktor, który przyjmuje odwołanie rvalue (&&
), aby utworzyć nowy obiekt, który używa tych samych danych bazowych co stary obiekt przekazywany jako argument, bez konieczności kopiowania obiektu.
Destruktor zwalnia ciąg wskazywany przez m_str
.
Przykład
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
Destruktora.
~CComBSTR();
Uwagi
Destruktor zwalnia ciąg wskazywany przez m_str
.
CComBSTR::Copy
Przydziela i zwraca kopię elementu m_str
.
BSTR Copy() const throw();
Wartość zwracana
Kopia elementu m_str
członkowskiego. Jeśli m_str
parametr ma NULL
wartość , zwraca wartość NULL
.
Przykład
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
Przydziela i zwraca kopię m_str
za pośrednictwem parametru .
HRESULT CopyTo(BSTR* pbstr) throw();
HRESULT CopyTo(VARIANT* pvarDest) throw();
Parametry
pbstr
[out] Adres obiektu BSTR
, w którym ma być zwracany ciąg przydzielony przez tę metodę.
pvarDest
[out] Adres obiektu VARIANT
, w którym ma być zwracany ciąg przydzielony przez tę metodę.
Wartość zwracana
Wartość standardowa HRESULT
wskazująca powodzenie lub niepowodzenie kopii.
Uwagi
Po wywołaniu tej metody wskazywany VARIANT
pvarDest
przez element będzie typu VT_BSTR
.
Przykład
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
Odłącza m_str
się od CComBSTR
obiektu i ustawia wartość NULL
m_str
.
BSTR Detach() throw();
Wartość zwracana
Obiekt BSTR
skojarzony z obiektem CComBSTR
.
Przykład
// 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
m_str
Zwalnia członka.
void Empty() throw();
Przykład
CComBSTR bstr(OLESTR("abc"));
// Calls SysFreeString to free the BSTR
bstr.Empty();
ATLASSERT(bstr.Length() == 0);
CComBSTR::Length
Zwraca liczbę znaków w m_str
obiekcie z wyłączeniem znaku null zakończenia.
unsigned int Length() const throw();
Wartość zwracana
Długość m_str
elementu członkowskiego.
Przykład
// string with 11 chars
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.Length();
ATLASSERT(len == 11);
CComBSTR::LoadString
Ładuje zasób ciągu określony przez nID
program i przechowuje go w tym obiekcie.
bool LoadString(HINSTANCE hInst, UINT nID) throw();
bool LoadString(UINT nID) throw();
Parametry
Zobacz LoadString
w zestawie Windows SDK.
Wartość zwracana
Zwraca TRUE
wartość , jeśli ciąg został pomyślnie załadowany; w przeciwnym razie zwraca wartość FALSE
.
Uwagi
Pierwsza funkcja ładuje zasób z modułu zidentyfikowanego przez Użytkownika za pomocą parametru hInst
. Druga funkcja ładuje zasób z modułu zasobów skojarzonego z obiektem CComModule
pochodnym używanym w tym projekcie.
Przykład
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
BSTR
Zawiera obiekt skojarzony z obiektem CComBSTR
.
BSTR m_str;
Przykład
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
Rzutuje CComBSTR
obiekt na BSTR
obiekt .
operator BSTR() const throw();
Uwagi
Umożliwia przekazywanie CComBSTR
obiektów do funkcji, które mają parametry [in]. BSTR
Przykład
Zobacz przykład dla elementu CComBSTR::m_str
.
CComBSTR::operator !
Sprawdza, czy BSTR
ciąg to NULL
.
bool operator!() const throw();
Wartość zwracana
Zwraca TRUE
wartość , jeśli element członkowski m_str
to NULL
; w przeciwnym razie FALSE
.
Uwagi
Ten operator sprawdza NULL
tylko wartość, a nie dla pustego ciągu.
Przykład
// 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 !=
Zwraca logiczne przeciwieństwo operator ==
wartości .
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
[in] CComBSTR
Obiekt.
pszSrc
[in] Ciąg bez zakończenia.
nNull
[in] Musi mieć wartość NULL.
Wartość zwracana
Zwraca TRUE
wartość, jeśli porównywany element nie jest równy obiektowi CComBSTR
; w przeciwnym razie zwraca wartość FALSE
.
Uwagi
CComBSTR
s są porównywane tekstowo w kontekście domyślnych ustawień regionalnych użytkownika. Końcowy operator porównania porównuje po prostu zawarty ciąg z NULL
.
CComBSTR::operator &
Zwraca adres BSTR
przechowywany w elemencie m_str
członkowskim.
BSTR* operator&() throw();
Uwagi
CComBstr operator &
ma specjalne asercji skojarzone z nim, aby pomóc zidentyfikować przecieki pamięci. Program będzie potwierdzać, kiedy m_str
element członkowski zostanie zainicjowany. To twierdzenie zostało utworzone w celu zidentyfikowania sytuacji, w których programista używa & operator
elementu w celu przypisania nowej wartości do m_str
elementu członkowskiego bez zwalniania pierwszej alokacji m_str
elementu . Jeśli m_str
równa NULL
się , program zakłada, że m_str nie został jeszcze przydzielony. W takim przypadku program nie będzie asercją.
To potwierdzenie nie jest domyślnie włączone. Zdefiniuj ATL_CCOMBSTR_ADDRESS_OF_ASSERT
, aby włączyć tę asercję.
Przykład
#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 +=
Dołącza ciąg do CComBSTR
obiektu.
CComBSTR& operator+= (const CComBSTR& bstrSrc);
CComBSTR& operator+= (const LPCOLESTR pszSrc);
Parametry
bstrSrc
[in] Obiekt CComBSTR
do dołączenia.
pszSrc
[in] Ciąg zerowy do dołączenia.
Uwagi
CComBSTR
s są porównywane tekstowo w kontekście domyślnych ustawień regionalnych użytkownika. Porównanie LPCOLESTR
odbywa się przy użyciu memcmp
danych pierwotnych w każdym ciągu. Porównanie LPCSTR
jest przeprowadzane w taki sam sposób, gdy utworzono tymczasową kopię pszSrc
Unicode. Końcowy operator porównania porównuje po prostu zawarty ciąg z NULL
.
Przykład
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 <
Porównuje element CComBSTR
z ciągiem.
bool operator<(const CComBSTR& bstrSrc) const throw();
bool operator<(LPCOLESTR pszSrc) const throw();
bool operator<(LPCSTR pszSrc) const throw();
Wartość zwracana
Zwraca TRUE
wartość , jeśli porównywany element jest mniejszy niż CComBSTR
obiekt; w przeciwnym razie zwraca wartość FALSE
.
Uwagi
Porównanie jest wykonywane przy użyciu domyślnych ustawień regionalnych użytkownika.
CComBSTR::operator =
Ustawia element członkowski m_str
na kopię pSrc
elementu członkowskiego lub kopię elementu BSTR
src
członkowskiego . Operator przypisania przenoszenia przenosi src
się bez kopiowania.
CComBSTR& operator= (const CComBSTR& src);
CComBSTR& operator= (LPCOLESTR pSrc);
CComBSTR& operator= (LPCSTR pSrc);
CComBSTR& operator= (CComBSTR&& src) throw(); // (Visual Studio 2017)
Uwagi
Parametr pSrc
określa LPCOLESTR
dla wersji Unicode lub LPCSTR
dla wersji ANSI.
Przykład
Zobacz przykład dla elementu CComBSTR::Copy
.
CComBSTR::operator ==
Porównuje element CComBSTR
z ciągiem. CComBSTR
s są porównywane tekstowo w kontekście domyślnych ustawień regionalnych użytkownika.
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
[in] CComBSTR
Obiekt.
pszSrc
[in] Ciąg bez zakończenia.
nNull
[in] Musi mieć wartość NULL
.
Wartość zwracana
Zwraca TRUE
wartość , jeśli porównywany element jest równy obiektowi CComBSTR
; w przeciwnym razie zwraca wartość FALSE
.
Uwagi
Końcowy operator porównania porównuje po prostu zawarty ciąg z NULL
.
CComBSTR::operator >
Porównuje element CComBSTR
z ciągiem.
bool operator>(const CComBSTR& bstrSrc) const throw();
Wartość zwracana
Zwraca TRUE
wartość , jeśli porównywany element jest większy niż CComBSTR
obiekt; w przeciwnym razie zwraca wartość FALSE
.
Uwagi
Porównanie jest wykonywane przy użyciu domyślnych ustawień regionalnych użytkownika.
CComBSTR::ReadFromStream
Ustawia element członkowski m_str
na BSTR
element zawarty w określonym strumieniu.
HRESULT ReadFromStream(IStream* pStream) throw();
Parametry
pStream
[in] Wskaźnik do interfejsu IStream
w strumieniu zawierającym dane.
Wartość zwracana
Wartość standardowa HRESULT
.
Uwagi
ReadToStream
wymaga, aby zawartość strumienia na bieżącym położeniu był zgodna z formatem danych zapisanym przez wywołanie metody WriteToStream
.
Przykład
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
Konwertuje zawarty ciąg na małe litery.
HRESULT ToLower() throw();
Wartość zwracana
Wartość standardowa HRESULT
.
Uwagi
Zobacz CharLowerBuff
, aby uzyskać więcej informacji na temat sposobu wykonywania konwersji.
CComBSTR::ToUpper
Konwertuje zawarty ciąg na wielkie litery.
HRESULT ToUpper() throw();
Wartość zwracana
Wartość standardowa HRESULT
.
Uwagi
Zobacz CharUpperBuff
, aby uzyskać więcej informacji na temat sposobu wykonywania konwersji.
CComBSTR::WriteToStream
Zapisuje element członkowski m_str
w strumieniu.
HRESULT WriteToStream(IStream* pStream) throw();
Parametry
pStream
[in] Wskaźnik do interfejsu IStream
w strumieniu.
Wartość zwracana
Wartość standardowa HRESULT
.
Uwagi
Możesz ponownie utworzyć element BSTR
z zawartości strumienia ReadFromStream
przy użyciu funkcji .
Przykład
//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;
}