65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.63/5 (4投票s)

2005 年 6 月 23 日

4分钟阅读

viewsIcon

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. 取出一个。 现在平衡剩下的两个。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© . All rights reserved.