在调试器中查看 BSTR 的内容? 好的技巧和笔记






2.63/5 (4投票s)
2005 年 6 月 23 日
4分钟阅读

31916
在调试器中查看 BSTR 的内容
引言
首先,请务必通过以下方式启用 Unicode 字符串的显示:
工具/选项/调试/显示 Unicode 字符串。 这应该可以启用 BSTR 类型的查看。
但是,BSTR 的包装器仍然会导致问题。
要显示 _bstr_t 类型,请将其添加到您的 \DevStudio\SharedIDE\bin\autoexp.dat 文件中。
_variant_t =vt=<vt,x> str=<bstrVal,su> short=<iVal>
long=<lVal>dbl=<dblVal,g>
_bstr_t =<m_Data->m_wstr,su>
tagVARIANT =vt=<vt,x> str=<bstrVal,su> short=<iVal>
long=<lVal>dbl=<dblVal,g>
********************************************
链表和数组之间的区别
在链表中,我们在运行时分配所需数量的内存,而在数组中,我们必须在编译时分配内存。
链表是动态分配,而数组是静态分配
移除链表的节点很容易,移除数组的单元格很难,你必须移动其余的单元格,这将是昂贵的。
只要指定索引,你就可以在数组中快速找到数据。 但是,在链表中,你需要从头部开始,需要 O(N) 的时间。
数组只能存储同质内容。 也就是相同类型的对象。 因此不需要类型转换
数组优于链表的优点是我们可以任意访问值,但是在
链表中,我们必须按顺序访问数据。
*******************
模板
C++ 模板允许实现一个泛型类..代码重用..
声明模板化类的基本语法如下
template <class a_type> class a_class {...};
上面的关键字“class”仅表示标识符 a_type 将代表一个数据类型。 注:a_type 不是关键字;它是一个标识符,在程序的执行过程中将代表一个单一的数据类型。 例如,当你在类中定义变量时,可以使用以下行
a_type a_var;
当程序员定义程序实例化 a_class 的特定实例时,'a_type' 是什么数据类型时,a_var 将属于该类型。
当将函数定义为模板化类的成员时,有必要将其定义为模板化函数
template<class a_type> void a_class<a_type>::a_function(){...}
声明模板化类的实例时,语法如下
a_class<int> an_example_class;
模板化类的实例化对象称为特化;术语特化很有用,因为它提醒我们原始类是一个泛型类,而类的特定实例化是为单一数据类型特化的(尽管可以对多种类型进行模板化)。
通常在编写代码时,从具体到抽象是最容易的;因此,为特定数据类型编写一个类,然后继续进行模板化 - 泛型 - 类更容易。 由于简洁是智慧的灵魂,因此本示例将是简短的,因此几乎没有实际应用。
我们将定义第一个类,使其仅对整数起作用。
class calc
{
public
int multiply(int x, int y);
int add(int x, int y);
};
int calc::multiply(int x, int y)
{
return x*y;
}
int calc::add(int x, int y)
{
return x+y;
}
现在我们有一个完全无害的小类,它对整数的效果非常好;但是,如果我们决定要一个泛型类,它对浮点数也能同样好地工作呢? 我们将使用一个模板。
template <class A_Type> class calc
{
public
A_Type multiply(A_Type x, A_Type y);
A_Type add(A_Type x, A_Type y);
};
template <class A_Type> A_Type calc<A_Type>::multiply(A_Type x,A_Type y)
{
return x*y;
}
template <class A_Type> A_Type calc<A_Type>::add(A_Type x, A_Type y)
{
return x+y;
}
要理解模板化类,只需考虑用关键字 int 替换 A_Type 标识符,除了作为模板或类定义的一部分。 它将与上述类相同;现在,当您实例化
calc 类的对象时,您可以选择该类将处理哪种数据类型。
calc <double> a_calc_class;
模板对于使你的程序更通用并允许你的代码以后被重用非常有用。
*********************
不错的谜题
我有一个秤和 7 个球。 其中一个球比其他球都重。 我如何在只有 3 次可能的称重尝试的情况下确定最重的球?
答案:我可以在 2 次尝试中完成。
1. 取出一个。
2. 在秤上平衡 6 个,每边 3 个。
3. 如果它们平衡,那么放在外面的就是罪魁祸首
4. 如果一侧下降,我们已经缩小到 3 个球
5. 取出一个。 现在平衡剩下的两个。