Classe CComBSTR
Essa classe é um wrapper para BSTR
s.
Sintaxe
class CComBSTR
Membros
Construtores públicos
Nome | Descrição |
---|---|
CComBSTR::CComBSTR |
O construtor . |
CComBSTR::~CComBSTR |
O destruidor. |
Métodos públicos
Nome | Descrição |
---|---|
CComBSTR::Append |
Acrescenta uma cadeia de caracteres a m_str . |
CComBSTR::AppendBSTR |
Acrescenta um BSTR a m_str . |
CComBSTR::AppendBytes |
Acrescenta um número especificado de bytes a m_str . |
CComBSTR::ArrayToBSTR |
Cria um BSTR do primeiro caractere de cada elemento no safearray e o anexa ao objeto CComBSTR . |
CComBSTR::AssignBSTR |
Atribui um BSTR a m_str . |
CComBSTR::Attach |
Anexa um BSTR ao objeto CComBSTR . |
CComBSTR::BSTRToArray |
Cria uma safearray unidimensional baseada em zero, em que cada elemento da matriz é um caractere do objeto CComBSTR . |
CComBSTR::ByteLength |
Retorna o comprimento de m_str em bytes. |
CComBSTR::Copy |
Retorna uma cópia de m_str . |
CComBSTR::CopyTo |
Retorna uma cópia de m_str por meio de um parâmetro [out] |
CComBSTR::Detach |
Desanexa m_str do objeto CComBSTR . |
CComBSTR::Empty |
Libera m_str . |
CComBSTR::Length |
Retorna o comprimento de m_str . |
CComBSTR::LoadString |
Carrega um recurso de cadeia de caracteres. |
CComBSTR::ReadFromStream |
Carrega um objeto BSTR de um fluxo. |
CComBSTR::ToLower |
Converte a cadeia de caracteres em minúsculas. |
CComBSTR::ToUpper |
Converte a cadeia de caracteres em maiúsculas. |
CComBSTR::WriteToStream |
Salva m_str em um fluxo. |
Operadores públicos
Nome | Descrição |
---|---|
CComBSTR::operator BSTR |
Converte um objeto CComBSTR em um BSTR. |
CComBSTR::operator ! |
Retorna TRUE ou FALSE, dependendo se m_str é NULL. |
CComBSTR::operator != |
Compara um CComBSTR com uma cadeia de caracteres. |
CComBSTR::operator & |
Retorna o endereço de m_str . |
CComBSTR::operator += |
Acrescenta um CComBSTR ao objeto. |
CComBSTR::operator < |
Compara um CComBSTR com uma cadeia de caracteres. |
CComBSTR::operator = |
Atribui um valor a m_str . |
CComBSTR::operator == |
Compara um CComBSTR com uma cadeia de caracteres. |
CComBSTR::operator > |
Compara um CComBSTR com uma cadeia de caracteres. |
Membros de Dados Públicos
Nome | Descrição |
---|---|
CComBSTR::m_str |
Contém o BSTR associado ao objeto CComBSTR . |
Comentários
A classe CComBSTR
é um wrapper para BSTR
s, que são cadeias de caracteres com prefixo de comprimento. O comprimento deve ser armazenado como um inteiro no local da memória que precede os dados na cadeia de caracteres.
Um BSTR
é terminado por null depois do último caractere contado, mas também pode conter caracteres nulos embutidos na cadeia de caracteres. O comprimento da cadeia de caracteres é determinado pela contagem de caracteres, não pelo primeiro caractere nulo.
Observação
A classe CComBSTR
fornece vários membros (construtores, operadores de atribuição e operadores de comparação) que tomam cadeias de caracteres ANSI ou Unicode como argumentos. As versões ANSI dessas funções são menos eficientes do que seus equivalentes Unicode, porque cadeias de caracteres Unicode temporárias geralmente são criadas internamente. Para obter eficiência, use as versões Unicode sempre que possível.
Observação
Devido ao comportamento de pesquisa aprimorado implementado no .NET do Visual Studio, código como bstr = L"String2" + bstr;
, que pode ter sido compilado em versões anteriores, deve ser implementado como bstr = CStringW(L"String2") + bstr
.
Para obter uma lista de precauções ao usar CComBSTR
, consulte Programação com CComBSTR
.
Requisitos
Cabeçalho: atlbase.h
CComBSTR::Append
Acrescenta lpsz
ou o membro BSTR de bstrSrc
a 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();
Parâmetros
bstrSrc
[in] Um objeto CComBSTR
a ser acrescentado.
ch
[in] Um caractere a ser acrescentado.
lpsz
[in] Uma cadeia de caracteres terminada por zero a ser acrescentada. Você pode passar uma cadeia de caracteres Unicode por meio da sobrecarga LPCOLESTR
ou uma cadeia de caracteres ANSI por meio da versão LPCSTR
.
nLen
[in] O número de caracteres em lpsz
a serem acrescentados.
Valor de retorno
S_OK
em êxito ou qualquer valor de erro padrão HRESULT
.
Comentários
Uma cadeia de caracteres ANSI será convertida em Unicode antes de ser acrescentada.
Exemplo
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
Acrescenta o BSTR
especificado a m_str
.
HRESULT AppendBSTR(BSTR p) throw();
Parâmetros
p
[in] Um BSTR
a acrescentar.
Valor de retorno
S_OK
em êxito ou qualquer valor de erro padrão HRESULT
.
Comentários
Não passe uma cadeia de caracteres larga comum para este método. O compilador não pode capturar o erro e ocorrerão erros de tempo de execução.
Exemplo
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
Acrescenta o número especificado de bytes a m_str
sem conversão.
HRESULT AppendBytes(const char* lpsz, int nLen) throw();
Parâmetros
lpsz
[in] Um ponteiro para uma matriz de bytes a serem acrescentados.
p
[in] O número de bytes a acrescentar.
Valor de retorno
S_OK
em êxito ou qualquer valor de erro padrão HRESULT
.
Exemplo
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
Libera qualquer cadeia de caracteres existente mantida no objeto CComBSTR
e, em seguida, cria um BSTR
a partir do primeiro caractere de cada elemento na safearray e anexa-o ao objeto CComBSTR
.
HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw();
Parâmetros
pSrc
[in] A safearray que contém os elementos usados para criar a cadeia de caracteres.
Valor de retorno
S_OK
em êxito ou qualquer valor de erro padrão HRESULT
.
CComBSTR::AssignBSTR
Atribui um BSTR
a m_str
.
HRESULT AssignBSTR(const BSTR bstrSrc) throw();
Parâmetros
bstrSrc
[in] Um BSTR a ser atribuído ao objeto CComBSTR
atual.
Valor de retorno
S_OK
em êxito ou qualquer valor de erro padrão HRESULT
.
CComBSTR::Attach
Atribui um BSTR
ao objeto CComBSTR
definindo o membro m_str
como src
.
void Attach(BSTR src) throw();
Parâmetros
src
[in] O BSTR
a anexar ao objeto.
Comentários
Não passe uma cadeia de caracteres larga comum para este método. O compilador não pode capturar o erro e ocorrerão erros de tempo de execução.
Observação
Esse método será declarado se m_str
não for NULL.
Exemplo
// 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
Cria uma safearray unidimensional baseada em zero, em que cada elemento da matriz é um caractere do objeto CComBSTR
.
HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw();
Parâmetros
ppArray
[out] O ponteiro para a safearray usado para manter os resultados da função.
Valor de retorno
S_OK
em êxito ou qualquer valor de erro padrão HRESULT
.
CComBSTR::ByteLength
Retorna o número de bytes em m_str
, excluindo o caractere nulo de terminação.
unsigned int ByteLength() const throw();
Valor de retorno
O comprimento do membro m_str
em bytes.
Comentários
Retorna 0 se m_str
é NULL
.
Exemplo
// string with 11 chars (22 bytes)
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.ByteLength();
ATLASSERT(len == 22);
CComBSTR::CComBSTR
O construtor . O construtor padrão define o membro m_str
como 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)
Parâmetros
nSize
[in] O número de caracteres a serem copiados de sz
ou o tamanho inicial em caracteres para o CComBSTR
.
sz
[in] A cadeia de caracteres a ser copiada. A versão Unicode especifica um LPCOLESTR
; a versão ANSI especifica um LPCSTR.
pSrc
[in] A cadeia de caracteres a ser copiada. A versão Unicode especifica um LPCOLESTR
; a versão ANSI especifica um LPCSTR.
src
[in] Um objeto CComBSTR
.
guid
[in] Uma referência a uma estrutura GUID
.
Comentários
O construtor de cópia define m_str
como uma cópia do membro BSTR de src
. O construtor REFGUID
converte o GUID em uma cadeia de caracteres usando StringFromGUID2
e armazena o resultado.
Os outros construtores definem m_str
como uma cópia da cadeia de caracteres especificada. Se você passar um valor para nSize
, somente nSize
caracteres serão copiados, seguidos por um caractere nulo de terminação.
CComBSTR
dá suporte à semântica de transferência de recursos. Você pode usar o construtor move (o construtor que usa uma referência rvalue (&&
) para criar um novo objeto que usa os mesmos dados subjacentes que o objeto antigo que você passa como um argumento, sem a sobrecarga de copiar o objeto.
O destruidor libera a cadeia de caracteres apontada por m_str
.
Exemplo
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
O destruidor.
~CComBSTR();
Comentários
O destruidor libera a cadeia de caracteres apontada por m_str
.
CComBSTR::Copy
Aloca e retorna uma cópia de m_str
.
BSTR Copy() const throw();
Valor de retorno
Uma cópia do membro m_str
. Se m_str
for NULL
, retorna NULL
.
Exemplo
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
Aloca e retorna uma cópia de m_str
por meio do parâmetro.
HRESULT CopyTo(BSTR* pbstr) throw();
HRESULT CopyTo(VARIANT* pvarDest) throw();
Parâmetros
pbstr
[out] O endereço de um BSTR
no qual retornar a cadeia de caracteres alocada por esse método.
pvarDest
[out] O endereço de um VARIANT
no qual retornar a cadeia de caracteres alocada por esse método.
Valor de retorno
Um valor padrão HRESULT
que indica o êxito ou a falha da cópia.
Comentários
Depois de chamar esse método, o VARIANT
indicado por pvarDest
será do tipo VT_BSTR
.
Exemplo
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
Desanexa m_str
do objeto CComBSTR
e define m_str
como NULL
.
BSTR Detach() throw();
Valor de retorno
O BSTR
associado ao objeto CComBSTR
.
Exemplo
// 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
Libera o membro m_str
.
void Empty() throw();
Exemplo
CComBSTR bstr(OLESTR("abc"));
// Calls SysFreeString to free the BSTR
bstr.Empty();
ATLASSERT(bstr.Length() == 0);
CComBSTR::Length
Retorna o número de caracteres em m_str
, excluindo o caractere nulo de terminação.
unsigned int Length() const throw();
Valor de retorno
O comprimento do membro m_str
.
Exemplo
// string with 11 chars
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.Length();
ATLASSERT(len == 11);
CComBSTR::LoadString
Carrega um recurso de cadeia de caracteres especificado por nID
e o armazena neste objeto.
bool LoadString(HINSTANCE hInst, UINT nID) throw();
bool LoadString(UINT nID) throw();
Parâmetros
Consulte LoadString
no SDK do Windows.
Valor de retorno
Retorna TRUE
se a cadeia de caracteres for carregada com êxito; caso contrário, retorna FALSE
.
Comentários
A primeira função carrega o recurso do módulo identificado por você por meio do parâmetro hInst
. A segunda função carrega o recurso do módulo de recurso associado ao objeto derivado de CComModule
usado neste projeto.
Exemplo
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
Contém o BSTR
associado ao objeto CComBSTR
.
BSTR m_str;
Exemplo
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
Converte um objeto CComBSTR
em um BSTR
.
operator BSTR() const throw();
Comentários
Permite que você passe objetos CComBSTR
para funções que têm parâmetros [in] BSTR
.
Exemplo
Confira o exemplo de CComBSTR::m_str
.
CComBSTR::operator !
Verifica se a cadeia de caracteres BSTR
é NULL
.
bool operator!() const throw();
Valor de retorno
Retorna TRUE
se o membro m_str
é NULL
; caso contrário, FALSE
.
Comentários
Esse operador verifica apenas um valor NULL
, não uma cadeia de caracteres vazia.
Exemplo
// 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 !=
Retorna o oposto lógico de operator ==
.
bool operator!= (const CComBSTR& bstrSrc) const throw();
bool operator!= (LPCOLESTR pszSrc) const;
bool operator!= (LPCSTR pszSrc) const;
bool operator!= (int nNull) const throw();
Parâmetros
bstrSrc
[in] Um objeto CComBSTR
.
pszSrc
[in] Uma cadeia de caracteres terminada em zero.
nNull
[in] Precisa ser NULL.
Valor de retorno
Retornará TRUE
se o item sendo comparado não for igual ao objeto CComBSTR
. Caso contrário, retornará FALSE
.
Comentários
CComBSTR
s são comparados textualmente no contexto da localidade padrão do usuário. O operador de comparação final apenas compara a cadeia de caracteres contida com NULL
.
CComBSTR::operator &
Retorna o endereço do BSTR
armazenado no membro m_str
.
BSTR* operator&() throw();
Comentários
CComBstr operator &
tem uma declaração especial associada a ela para ajudar a identificar perda de memória. O programa será declarado quando o membro m_str
for inicializado. Essa declaração foi criada para identificar situações em que um programador usa & operator
para atribuir um novo valor ao membro m_str
sem liberar a primeira alocação de m_str
. Se m_str
é igual NULL
, o programa pressupõe que m_str ainda não foi alocado. Nesse caso, o programa não vai declarar.
Essa declaração não está habilitada por padrão. Defina ATL_CCOMBSTR_ADDRESS_OF_ASSERT
para habilitar essa declaração.
Exemplo
#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 +=
Acrescenta uma cadeia de caracteres ao objeto CComBSTR
.
CComBSTR& operator+= (const CComBSTR& bstrSrc);
CComBSTR& operator+= (const LPCOLESTR pszSrc);
Parâmetros
bstrSrc
[in] Um objeto CComBSTR
a ser acrescentado.
pszSrc
[in] Uma cadeia de caracteres terminada em zero a ser acrescentada.
Comentários
CComBSTR
s são comparados textualmente no contexto da localidade padrão do usuário. A comparação LPCOLESTR
é feita usando memcmp
nos dados brutos em cada cadeia de caracteres. A comparação LPCSTR
é realizada da mesma forma depois que uma cópia temporária de Unicode de pszSrc
é criada. O operador de comparação final apenas compara a cadeia de caracteres contida com NULL
.
Exemplo
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 <
Compara um CComBSTR
com uma cadeia de caracteres.
bool operator<(const CComBSTR& bstrSrc) const throw();
bool operator<(LPCOLESTR pszSrc) const throw();
bool operator<(LPCSTR pszSrc) const throw();
Valor de retorno
Retornará TRUE
se o item sendo comparado for menor que o objeto CComBSTR
. Caso contrário, retornará FALSE
.
Comentários
A comparação é executada usando a localidade padrão do usuário.
CComBSTR::operator =
Define o membro m_str
como uma cópia de pSrc
ou para uma cópia do membro BSTR
de src
. O operador de atribuição de movimentação move src
sem copiá-lo.
CComBSTR& operator= (const CComBSTR& src);
CComBSTR& operator= (LPCOLESTR pSrc);
CComBSTR& operator= (LPCSTR pSrc);
CComBSTR& operator= (CComBSTR&& src) throw(); // (Visual Studio 2017)
Comentários
O parâmetro pSrc
especifica LPCOLESTR
para versões Unicode ou LPCSTR
para versões ANSI.
Exemplo
Confira o exemplo de CComBSTR::Copy
.
CComBSTR::operator ==
Compara um CComBSTR
com uma cadeia de caracteres. CComBSTR
s são comparados textualmente no contexto da localidade padrão do usuário.
bool operator== (const CComBSTR& bstrSrc) const throw();
bool operator== (LPCOLESTR pszSrc) const;
bool operator== (LPCSTR pszSrc) const;
bool operator== (int nNull) const throw();
Parâmetros
bstrSrc
[in] Um objeto CComBSTR
.
pszSrc
[in] Uma cadeia de caracteres terminada em zero.
nNull
[in] Deve ser NULL
.
Valor de retorno
Retornará TRUE
se o item sendo comparado for igual ao objeto CComBSTR
. Caso contrário, retornará FALSE
.
Comentários
O operador de comparação final apenas compara a cadeia de caracteres contida com NULL
.
CComBSTR::operator >
Compara um CComBSTR
com uma cadeia de caracteres.
bool operator>(const CComBSTR& bstrSrc) const throw();
Valor de retorno
Retornará TRUE
se o item sendo comparado for maior que o objeto CComBSTR
. Caso contrário, retornará FALSE
.
Comentários
A comparação é executada usando a localidade padrão do usuário.
CComBSTR::ReadFromStream
Define o membro m_str
para o BSTR
contido no fluxo especificado.
HRESULT ReadFromStream(IStream* pStream) throw();
Parâmetros
pStream
[in] Um ponteiro para a interface IStream
no fluxo que contém os dados.
Valor de retorno
Um valor HRESULT
padrão.
Comentários
ReadToStream
requer que o conteúdo do fluxo na posição atual seja compatível com o formato de dados gravado por uma chamada para WriteToStream
.
Exemplo
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
Converte em minúsculas a cadeia de caracteres contida.
HRESULT ToLower() throw();
Valor de retorno
Um valor HRESULT
padrão.
Comentários
Confira CharLowerBuff
para mais informações sobre como a conversão é executada.
CComBSTR::ToUpper
Converte a cadeia de caracteres contida em maiúsculas.
HRESULT ToUpper() throw();
Valor de retorno
Um valor HRESULT
padrão.
Comentários
Confira CharUpperBuff
para mais informações sobre como a conversão é executada.
CComBSTR::WriteToStream
Salva o membro m_str
em um fluxo.
HRESULT WriteToStream(IStream* pStream) throw();
Parâmetros
pStream
[in] Um ponteiro para a IStream
interface em um fluxo.
Valor de retorno
Um valor HRESULT
padrão.
Comentários
Você pode recriar um BSTR
a partir do conteúdo do fluxo usando a função ReadFromStream
.
Exemplo
//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;
}
Confira também
Visão geral da aula
Macros de conversão de cadeia de caracteres ATL e MFC