什么是操作员!!在c++的字符串上做
What does operator !! do on a string c++
我想知道操作符的返回值是什么!!c++中_bstr_t
类型(string) .
为例:
if (!!mybstr)
{
doSomething()
} else {
doNothing()
}
我假设它是一个布尔返回,但它是如何工作的?
谢谢!
如果封装的BSTR
字符串为NULL
,则_bstr_t::operator!
返回true
。因此,如果封装的BSTR
字符串不是NULL
,则!!mybstr
将是true
。
!!
不是操作符。这只是!
运算符的两个应用。对于普通的bool
值,净效果是无操作。对于隐式转换为bool
的类型,有时使用它强制转换为bool
。对于operator!
重载的类型,它可以根据operator!
的语义做任何事情。
如果你查看MSDN文档:
检查封装的BSTR是否为NULL字符串。
如果你做了两次,那么你先检查它是不是空的,然后如果它不是空的,所以你实际上是在检查if (bstr)
if (!!mybstr) = if (!(!mybstr)) = if (mybstr)