CComBSTR
Kelas
Kelas ini adalah pembungkus untuk BSTR
s.
Sintaks
class CComBSTR
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CComBSTR::CComBSTR |
Konstruktor. |
CComBSTR::~CComBSTR |
Destruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CComBSTR::Append |
Menambahkan string ke m_str . |
CComBSTR::AppendBSTR |
BSTR Menambahkan ke m_str . |
CComBSTR::AppendBytes |
Menambahkan jumlah byte tertentu ke m_str . |
CComBSTR::ArrayToBSTR |
BSTR Membuat dari karakter pertama setiap elemen dalam safearray dan melampirkannya ke CComBSTR objek. |
CComBSTR::AssignBSTR |
BSTR Menetapkan ke m_str . |
CComBSTR::Attach |
Melampirkan BSTR ke CComBSTR objek. |
CComBSTR::BSTRToArray |
Membuat safearray satu dimensi berbasis nol, di mana setiap elemen array adalah karakter dari CComBSTR objek. |
CComBSTR::ByteLength |
Mengembalikan panjang m_str dalam byte. |
CComBSTR::Copy |
Mengembalikan salinan .m_str |
CComBSTR::CopyTo |
Mengembalikan salinan m_str melalui [out] parameter |
CComBSTR::Detach |
Mencopot m_str dari CComBSTR objek. |
CComBSTR::Empty |
m_str Gratis . |
CComBSTR::Length |
Mengembalikan panjang m_str . |
CComBSTR::LoadString |
Memuat sumber daya string. |
CComBSTR::ReadFromStream |
BSTR Memuat objek dari aliran. |
CComBSTR::ToLower |
Mengonversi string menjadi huruf kecil. |
CComBSTR::ToUpper |
Mengonversi string menjadi huruf besar. |
CComBSTR::WriteToStream |
m_str Menyimpan ke aliran. |
Operator Publik
Nama | Deskripsi |
---|---|
CComBSTR::operator BSTR |
Melemparkan CComBSTR objek ke BSTR. |
CComBSTR::operator ! |
Mengembalikan TRUE atau FALSE, tergantung pada apakah m_str NULL. |
CComBSTR::operator != |
Membandingkan CComBSTR dengan string. |
CComBSTR::operator & |
Mengembalikan alamat .m_str |
CComBSTR::operator += |
CComBSTR Menambahkan ke objek. |
CComBSTR::operator < |
Membandingkan CComBSTR dengan string. |
CComBSTR::operator = |
Menetapkan nilai ke m_str . |
CComBSTR::operator == |
Membandingkan CComBSTR dengan string. |
CComBSTR::operator > |
Membandingkan CComBSTR dengan string. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CComBSTR::m_str |
Berisi yang BSTR terkait dengan CComBSTR objek. |
Keterangan
Kelas CComBSTR
adalah pembungkus untuk BSTR
s, yang merupakan string berawalan panjang. Panjang disimpan sebagai bilangan bulat di lokasi memori sebelum data dalam string.
BSTR
dihentikan null setelah karakter terakhir dihitung tetapi mungkin juga berisi karakter null yang disematkan dalam string. Panjang string ditentukan oleh jumlah karakter, bukan karakter null pertama.
Catatan
Kelas ini CComBSTR
menyediakan sejumlah anggota (konstruktor, operator penugasan, dan operator perbandingan) yang mengambil string ANSI atau Unicode sebagai argumen. Versi ANSI dari fungsi-fungsi ini kurang efisien daripada rekan-rekan Unicode mereka karena string Unicode sementara sering dibuat secara internal. Untuk efisiensi, gunakan versi Unicode jika memungkinkan.
Catatan
Karena perilaku pencarian yang ditingkatkan yang diterapkan di Visual Studio .NET, kode seperti bstr = L"String2" + bstr;
, yang mungkin telah dikompilasi dalam rilis sebelumnya, seharusnya diimplementasikan sebagai bstr = CStringW(L"String2") + bstr
.
Untuk daftar perhatian saat menggunakan CComBSTR
, lihat Pemrograman dengan CComBSTR
.
Persyaratan
Header: atlbase.h
CComBSTR::Append
Menambahkan salah satu lpsz
atau anggota BSTR dari bstrSrc
ke 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();
Parameter
bstrSrc
[di] Objek CComBSTR
untuk ditambahkan.
ch
[di] Karakter untuk ditambahkan.
lpsz
[di] String karakter yang dihentikan nol untuk ditambahkan. Anda dapat meneruskan string Unicode melalui LPCOLESTR
kelebihan beban atau string ANSI melalui LPCSTR
versi .
nLen
[di] Jumlah karakter dari lpsz
untuk ditambahkan.
Tampilkan Nilai
S_OK
pada keberhasilan, atau nilai kesalahan standar HRESULT
apa pun.
Keterangan
String ANSI akan dikonversi ke Unicode sebelum ditambahkan.
Contoh
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
Menambahkan yang ditentukan BSTR
ke m_str
.
HRESULT AppendBSTR(BSTR p) throw();
Parameter
p
[di] A BSTR
untuk ditambahkan.
Tampilkan Nilai
S_OK
pada keberhasilan, atau nilai kesalahan standar HRESULT
apa pun.
Keterangan
Jangan meneruskan string karakter lebar biasa ke metode ini. Kompiler tidak dapat menangkap kesalahan dan kesalahan run time akan terjadi.
Contoh
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
Menambahkan jumlah byte yang ditentukan ke m_str
tanpa konversi.
HRESULT AppendBytes(const char* lpsz, int nLen) throw();
Parameter
lpsz
[di] Penunjuk ke array byte untuk ditambahkan.
p
[di] Jumlah byte yang akan ditambahkan.
Tampilkan Nilai
S_OK
pada keberhasilan, atau nilai kesalahan standar HRESULT
apa pun.
Contoh
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
Membebaskan string yang ada yang dipegang dalam CComBSTR
objek, lalu membuat BSTR
dari karakter pertama dari setiap elemen dalam safearray dan melampirkannya ke CComBSTR
objek.
HRESULT ArrayToBSTR(const SAFEARRAY* pSrc) throw();
Parameter
pSrc
[di] Safearray yang berisi elemen yang digunakan untuk membuat string.
Tampilkan Nilai
S_OK
pada keberhasilan, atau nilai kesalahan standar HRESULT
apa pun.
CComBSTR::AssignBSTR
BSTR
Menetapkan ke m_str
.
HRESULT AssignBSTR(const BSTR bstrSrc) throw();
Parameter
bstrSrc
[di] BSTR untuk ditetapkan ke objek saat ini CComBSTR
.
Tampilkan Nilai
S_OK
pada keberhasilan, atau nilai kesalahan standar HRESULT
apa pun.
CComBSTR::Attach
Melampirkan BSTR
ke CComBSTR
objek dengan mengatur m_str
anggota ke src
.
void Attach(BSTR src) throw();
Parameter
src
[di] untuk BSTR
melampirkan ke objek.
Keterangan
Jangan meneruskan string karakter lebar biasa ke metode ini. Kompiler tidak dapat menangkap kesalahan dan kesalahan run time akan terjadi.
Catatan
Metode ini akan menegaskan jika m_str
bukan- NULL.
Contoh
// 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
Membuat safearray satu dimensi berbasis nol, di mana setiap elemen array adalah karakter dari CComBSTR
objek.
HRESULT BSTRToArray(LPSAFEARRAY* ppArray) throw();
Parameter
ppArray
[out] Penunjuk ke safearray yang digunakan untuk menyimpan hasil fungsi.
Tampilkan Nilai
S_OK
pada keberhasilan, atau nilai kesalahan standar HRESULT
apa pun.
CComBSTR::ByteLength
Mengembalikan jumlah byte dalam m_str
, tidak termasuk karakter null yang dihentikan.
unsigned int ByteLength() const throw();
Tampilkan Nilai
Panjang m_str
anggota dalam byte.
Keterangan
Mengembalikan 0 jika m_str
adalah NULL
.
Contoh
// string with 11 chars (22 bytes)
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.ByteLength();
ATLASSERT(len == 22);
CComBSTR::CComBSTR
Konstruktor. Konstruktor default mengatur m_str
anggota ke 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)
Parameter
nSize
[di] Jumlah karakter yang akan disalin dari sz
atau ukuran awal dalam karakter untuk CComBSTR
.
sz
[di] String yang akan disalin. Versi Unicode menentukan LPCOLESTR
; versi ANSI menentukan LPCSTR.
pSrc
[di] String yang akan disalin. Versi Unicode menentukan LPCOLESTR
; versi ANSI menentukan LPCSTR.
src
[di] Sebuah CComBSTR
objek.
guid
[di] Referensi ke GUID
struktur.
Keterangan
Konstruktor salinan diatur m_str
ke salinan anggota BSTR dari src
. REFGUID
Konstruktor mengonversi GUID menjadi string menggunakan StringFromGUID2
dan menyimpan hasilnya.
Konstruktor lain diatur m_str
ke salinan string yang ditentukan. Jika Anda meneruskan nilai untuk nSize
, maka hanya nSize
karakter yang akan disalin, diikuti oleh karakter null yang mengakhiri.
CComBSTR
mendukung semantik pemindahan. Anda dapat menggunakan konstruktor pemindahan (konstruktor yang mengambil referensi rvalue (&&
) untuk membuat objek baru yang menggunakan data dasar yang sama dengan objek lama yang Anda teruskan sebagai argumen, tanpa overhead menyalin objek.
Destruktor membebaskan string yang ditunjukkan oleh m_str
.
Contoh
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();
Keterangan
Destruktor membebaskan string yang ditunjukkan oleh m_str
.
CComBSTR::Copy
Mengalokasikan dan mengembalikan salinan m_str
.
BSTR Copy() const throw();
Tampilkan Nilai
Salinan m_str
anggota. Jika m_str
adalah NULL
, mengembalikan NULL
.
Contoh
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
Mengalokasikan dan mengembalikan salinan m_str
melalui parameter .
HRESULT CopyTo(BSTR* pbstr) throw();
HRESULT CopyTo(VARIANT* pvarDest) throw();
Parameter
pbstr
[out] Alamat untuk mengembalikan string yang BSTR
dialokasikan oleh metode ini.
pvarDest
[out] Alamat untuk mengembalikan string yang VARIANT
dialokasikan oleh metode ini.
Tampilkan Nilai
Nilai standar HRESULT
yang menunjukkan keberhasilan atau kegagalan salinan.
Keterangan
Setelah memanggil metode ini, yang VARIANT
ditujuk oleh pvarDest
akan berjenis VT_BSTR
.
Contoh
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
m_str
Melepaskan dari CComBSTR
objek dan mengatur m_str
ke NULL
.
BSTR Detach() throw();
Tampilkan Nilai
Yang BSTR
terkait dengan CComBSTR
objek.
Contoh
// 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
Membebaskan anggota.
void Empty() throw();
Contoh
CComBSTR bstr(OLESTR("abc"));
// Calls SysFreeString to free the BSTR
bstr.Empty();
ATLASSERT(bstr.Length() == 0);
CComBSTR::Length
Mengembalikan jumlah karakter dalam m_str
, tidak termasuk karakter null yang dihentikan.
unsigned int Length() const throw();
Tampilkan Nilai
Panjang m_str
anggota.
Contoh
// string with 11 chars
CComBSTR bstrTemp(OLESTR("Hello World"));
unsigned int len = bstrTemp.Length();
ATLASSERT(len == 11);
CComBSTR::LoadString
Memuat sumber daya string yang ditentukan oleh nID
dan menyimpannya di objek ini.
bool LoadString(HINSTANCE hInst, UINT nID) throw();
bool LoadString(UINT nID) throw();
Parameter
Lihat LoadString
di Windows SDK.
Tampilkan Nilai
Mengembalikan TRUE
jika string berhasil dimuat; jika tidak, mengembalikan FALSE
.
Keterangan
Fungsi pertama memuat sumber daya dari modul yang diidentifikasi oleh Anda melalui hInst
parameter . Fungsi kedua memuat sumber daya dari modul sumber daya yang terkait dengan CComModule
objek -turunan yang digunakan dalam proyek ini.
Contoh
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
Berisi yang BSTR
terkait dengan CComBSTR
objek.
BSTR m_str;
Contoh
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
Melemparkan CComBSTR
objek ke BSTR
.
operator BSTR() const throw();
Keterangan
Memungkinkan Anda meneruskan CComBSTR
objek ke fungsi yang memiliki parameter [in BSTR
].
Contoh
Lihat contoh untuk CComBSTR::m_str
.
CComBSTR::operator !
Memeriksa apakah BSTR
string adalah NULL
.
bool operator!() const throw();
Tampilkan Nilai
Mengembalikan TRUE
jika anggota adalah NULL
; jika tidak, FALSE
m_str
.
Keterangan
Operator ini hanya memeriksa NULL
nilai, bukan untuk string kosong.
Contoh
// 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 !=
Mengembalikan kebalikan logis dari operator ==
.
bool operator!= (const CComBSTR& bstrSrc) const throw();
bool operator!= (LPCOLESTR pszSrc) const;
bool operator!= (LPCSTR pszSrc) const;
bool operator!= (int nNull) const throw();
Parameter
bstrSrc
[di] Sebuah CComBSTR
objek.
pszSrc
[di] String yang dihentikan nol.
nNull
[di] Harus NULL.
Tampilkan Nilai
Mengembalikan TRUE
jika item yang dibandingkan tidak sama dengan CComBSTR
objek; jika tidak, mengembalikan FALSE
.
Keterangan
CComBSTR
s dibandingkan secara tekstual dalam konteks lokal default pengguna. Operator perbandingan akhir hanya membandingkan string yang terkandung dengan NULL
.
CComBSTR::operator &
Mengembalikan alamat yang BSTR
disimpan dalam m_str
anggota.
BSTR* operator&() throw();
Keterangan
CComBstr operator &
memiliki pernyataan khusus yang terkait dengannya untuk membantu mengidentifikasi kebocoran memori. Program akan menegaskan kapan anggota diinisialisasi m_str
. Pernyataan ini dibuat untuk mengidentifikasi situasi di mana programmer menggunakan & operator
untuk menetapkan nilai baru kepada m_str
anggota tanpa membebaskan alokasi m_str
pertama . Jika m_str
sama dengan NULL
, program mengasumsikan bahwa m_str belum dialokasikan. Dalam hal ini, program tidak akan menegaskan.
Pernyataan ini tidak diaktifkan secara default. Tentukan ATL_CCOMBSTR_ADDRESS_OF_ASSERT
untuk mengaktifkan pernyataan ini.
Contoh
#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 +=
Menambahkan string ke CComBSTR
objek.
CComBSTR& operator+= (const CComBSTR& bstrSrc);
CComBSTR& operator+= (const LPCOLESTR pszSrc);
Parameter
bstrSrc
[di] Objek CComBSTR
untuk ditambahkan.
pszSrc
[di] String yang dihentikan nol untuk ditambahkan.
Keterangan
CComBSTR
s dibandingkan secara tekstual dalam konteks lokal default pengguna. Perbandingan LPCOLESTR
dilakukan menggunakan memcmp
pada data mentah di setiap string. Perbandingan LPCSTR
dilakukan dengan cara yang sama setelah salinan pszSrc
Unicode sementara dibuat. Operator perbandingan akhir hanya membandingkan string yang terkandung dengan NULL
.
Contoh
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 <
Membandingkan CComBSTR
dengan string.
bool operator<(const CComBSTR& bstrSrc) const throw();
bool operator<(LPCOLESTR pszSrc) const throw();
bool operator<(LPCSTR pszSrc) const throw();
Tampilkan Nilai
Mengembalikan TRUE
jika item yang dibandingkan kurang dari CComBSTR
objek; jika tidak, mengembalikan FALSE
.
Keterangan
Perbandingan dilakukan menggunakan lokal default pengguna.
CComBSTR::operator =
m_str
Mengatur anggota ke salinan pSrc
atau ke salinan anggota BSTR
.src
Operator penetapan pemindahan bergerak src
tanpa menyalinnya.
CComBSTR& operator= (const CComBSTR& src);
CComBSTR& operator= (LPCOLESTR pSrc);
CComBSTR& operator= (LPCSTR pSrc);
CComBSTR& operator= (CComBSTR&& src) throw(); // (Visual Studio 2017)
Keterangan
Parameter pSrc
menentukan LPCOLESTR
untuk versi Unicode atau LPCSTR
untuk versi ANSI.
Contoh
Lihat contoh untuk CComBSTR::Copy
.
CComBSTR::operator ==
Membandingkan CComBSTR
dengan string. CComBSTR
s dibandingkan secara tekstual dalam konteks lokal default pengguna.
bool operator== (const CComBSTR& bstrSrc) const throw();
bool operator== (LPCOLESTR pszSrc) const;
bool operator== (LPCSTR pszSrc) const;
bool operator== (int nNull) const throw();
Parameter
bstrSrc
[di] Sebuah CComBSTR
objek.
pszSrc
[di] String yang dihentikan nol.
nNull
[di] Harus .NULL
Tampilkan Nilai
Mengembalikan TRUE
jika item yang dibandingkan sama dengan CComBSTR
objek; jika tidak, mengembalikan FALSE
.
Keterangan
Operator perbandingan akhir hanya membandingkan string yang terkandung dengan NULL
.
CComBSTR::operator >
Membandingkan CComBSTR
dengan string.
bool operator>(const CComBSTR& bstrSrc) const throw();
Tampilkan Nilai
Mengembalikan TRUE
jika item yang dibandingkan lebih besar dari CComBSTR
objek; jika tidak, mengembalikan FALSE
.
Keterangan
Perbandingan dilakukan menggunakan lokal default pengguna.
CComBSTR::ReadFromStream
m_str
Mengatur anggota ke yang BSTR
terkandung dalam aliran yang ditentukan.
HRESULT ReadFromStream(IStream* pStream) throw();
Parameter
pStream
[di] Penunjuk ke IStream
antarmuka pada aliran yang berisi data.
Tampilkan Nilai
Nilai standar HRESULT
.
Keterangan
ReadToStream
mengharuskan konten aliran pada posisi saat ini kompatibel dengan format data yang ditulis oleh panggilan ke WriteToStream
.
Contoh
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
Mengonversi string yang terkandung menjadi huruf kecil.
HRESULT ToLower() throw();
Tampilkan Nilai
Nilai standar HRESULT
.
Keterangan
Lihat CharLowerBuff
untuk informasi selengkapnya tentang bagaimana konversi dilakukan.
CComBSTR::ToUpper
Mengonversi string yang terkandung menjadi huruf besar.
HRESULT ToUpper() throw();
Tampilkan Nilai
Nilai standar HRESULT
.
Keterangan
Lihat CharUpperBuff
untuk informasi selengkapnya tentang bagaimana konversi dilakukan.
CComBSTR::WriteToStream
m_str
Menyimpan anggota ke aliran.
HRESULT WriteToStream(IStream* pStream) throw();
Parameter
pStream
[di] Penunjuk ke IStream
antarmuka pada aliran.
Tampilkan Nilai
Nilai standar HRESULT
.
Keterangan
Anda dapat membuat BSTR
ulang dari konten aliran menggunakan ReadFromStream
fungsi .
Contoh
//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;
}