在处理BSTR字符串时,经常需要一个能够提供基本缓冲支持的类。CBSTRStream类正是为了满足这一需求而设计的,它不仅提供了缓冲功能,还包含了一些有用的数据类型转换函数。这个类并不是_bstr_t类的替代品,而是为了与之互操作而设计的。
CBSTRStream类的使用非常简单,只需要使用<<操作符就可以将数据追加到流中。文章末尾的列表将提供更详细的概览。
_bstr_t bstrData(L"somedata");
_bstr_t bstrData2(L"some other data");
GUID guid = /* someguid */;
long nData = 3;
CBSTRStream bsData;
bsData << bstrData << L"TEST" << nData << L"" << bstrData2 << L"" << guid;
在这个示例中,创建了两个_bstr_t对象bstrData和bstrData2,以及一个GUID对象和一个长整型变量nData。然后,创建了一个CBSTRStream对象bsData,并使用<<操作符将这些数据追加到流中。
long nItemId = 1;
CBSTRStream bsSelect;
bsSelect << L"SELECT It_Name, It_Desc FROM It_Item WHERE It_Id = " << nItemId;
在这个示例中,创建了一个CBSTRStream对象bsSelect,并使用<<操作符构建了一个SQL查询语句。
long nData = 14;
long nData2 = 18;
long nData3 = 25;
CBSTRStream bsData(10, 5);
bsData << L"Numbers: " << nData << L", " << nData2;
bsData << L", " << nData3;
在这个示例中,创建了一个CBSTRStream对象bsData,并指定了初始缓冲区大小和块大小。然后,使用<<操作符将一些长整型变量追加到流中。
CBSTRStream类提供了两个构造函数,允许为流分配器设置分配提示。nInitialBufferSize设置了首次缓冲区分配的大小,而nChunkSize设置了后续缓冲区重新分配时追加的大小。
CBSTRStream(const CBSTRStream& bsSrc, long nInitialBufferSize = 50, long nChunkSize = 50)
CBSTRStream(long nInitialBufferSize = 50, long nChunkSize = 50)
CBSTRStream类重载了多个操作符,提供了基本的流支持以及数据类型转换。它们将各自数据类型的字符串表示追加到流中。
CBSTRStream& operator << (const _bstr_t& bstrData)
CBSTRStream& operator << (wchar_t* pstr)
CBSTRStream& operator << (REFGUID src)
CBSTRStream& operator << (long nData)
CBSTRStream& operator << (unsigned long nData)
CBSTRStream& operator << (int nData)
CBSTRStream& operator << (double dValue)
CBSTRStream& operator << (const CBSTRStream& bsSrc)
比较两个CBSTRStream对象。
为现有的CBSTRStream对象分配一个新的值。
提取封装的BSTR对象的指针/对象。
CBSTRStream类提供了一些操作,如重置字符串(但保留缓冲区)和获取封装的BSTR的长度。
void reset
重置字符串,但保留缓冲区。
long length const
返回封装的BSTR的长度。