什么是操作员!!在c++的字符串上做

What does operator !! do on a string c++

本文关键字:字符串 操作员 什么 c++      更新时间:2023-10-16

我想知道操作符的返回值是什么!!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)