如果条件带有_bstr_t变量

时间:2018-10-04 04:40:31

标签: visual-c++ types

我需要将已知的“字符串”值与“ _bstr_t”变量进行比较。我已经将“ _bstr_t”转换为“字符串”。但是为什么下面的方法不起作用。谢谢

   _bstr_t bstr = L"My string"; 

   if (_bstr_t(bstr,false)=="My string")
   {
     int pp=0;
   }

1 个答案:

答案 0 :(得分:0)

  

我试图通过使用“ _bstr_t(bstr,false)”将“ bstr”转换为“ string”类型

_bstr_t(bstr,false)的作用是创建第二个_bstr_t,它指向BSTR指向的同一bstr

  

如果我写“ if(bstr ==“我的字符串”)”。出现错误……

在这种情况下,编译器将很难确定==的含义,因为==的左侧是_bstr_t,而右侧是{{ 1}}

它可以解释为内置的指针相等运算符,用于比较两个指针-看看它们是否都指向同一位置。 或者,这可能意味着_bstr_t operator ==比较了两个const char [10],以查看它们在字典上是否相等。

  

我需要将已知的“字符串”值与“ _bstr_t”变量进行比较

由于您需要按字典顺序进行比较,因此您可能需要_bstr_t。一种方法是从您的字符串常量构造一个_bstr_t operator ==

_bstr_t