【问题标题】:if condition with _bstr_t variableif 条件与 _bstr_t 变量
【发布时间】:2018-10-06 06:56:28
【问题描述】:

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

   _bstr_t bstr = L"My string"; 

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

【问题讨论】:

  • 这里的bstr 是什么?
  • 对不起,这里是“bstr”的定义。 _bstr_t bstr = L"我的字符串";
  • 如果变量bstr 已经是_bstr_t 类型,为什么还要在if 表达式中构造另一个_bstr_t
  • 变量 'bstr' 是类型 '_bstr_t',如果我写“if (bstr=="My string")”。比较“_bstr_t”和“string”时出错。我试图通过使用“_bstr_t(bstr,false)”将“bstr”转换为“string”类型

标签: visual-c++ types


【解决方案1】:

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

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

如果我写“if (bstr=="My string")”。有错误……

在这种情况下,编译器很难弄清楚== 的含义,因为== 的左侧是_bstr_t,右侧是const char [10]

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 2013-07-14
    • 2021-12-08
    • 2014-12-06
    • 2023-03-08
    • 1970-01-01
    • 2023-02-02
    • 2011-03-31
    相关资源
    最近更新 更多