【问题标题】:What does operator !! do on a string c++operator 是什么意思!!在字符串上做 c++
【发布时间】:2013-04-15 10:55:54
【问题描述】:

我想知道运营商的回报是什么!在 c++ 中的 _bstr_t 类型(字符串)上。

示例:

if (!!mybstr)
{
doSomething()
} else {
doNothing()
}

我假设它是一个布尔返回,但它是如何工作的?

谢谢!

【问题讨论】:

  • 没有运营商!!。它实际上是 2 个连续的 ! 运算符。

标签: c++ string operators


【解决方案1】:

如果封装的BSTR 字符串为NULL,则_bstr_t::operator! 返回true。因此,如果封装的 BSTR 字符串不是 NULL,则 !!mybstr 将是 true

【讨论】:

    【解决方案2】:

    !! 不是运算符。这只是! 运算符的两个应用程序。对于普通的 bool 值,最终效果是无操作。对于隐式转换为bool 的类型,它有时用于强制转换为bool。对于重载了operator! 的类型,它可以根据operator! 的语义做任何事情。

    【讨论】:

      【解决方案3】:

      如果你查看MSDN documentation:

      检查封装的 BSTR 是否为 NULL 字符串。

      因此,如果您执行两次,则首先检查它是否不为空,然后如果不为空,则本质上是检查if (bstr)

      【讨论】:

        【解决方案4】:
        if (!!mybstr) = if (!(!mybstr)) = if (mybstr)
        

        【讨论】:

        • 虽然在数学上看起来是这样,但“运算符!”应用两次并不总是与“运算符布尔”相同,一些 C++ 类只提供一个而不提供另一个。
        猜你喜欢
        • 2011-12-11
        • 2017-09-12
        • 2017-05-16
        • 2013-04-12
        • 2015-01-03
        • 1970-01-01
        • 2018-08-28
        • 2018-05-01
        相关资源
        最近更新 更多