Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 接线员是干什么的!!对字符串c++;_C++_String_Operators - Fatal编程技术网

C++ 接线员是干什么的!!对字符串c++;

C++ 接线员是干什么的!!对字符串c++;,c++,string,operators,C++,String,Operators,我想知道接线员的回报是什么!!关于C++中的 例如: if (!!mybstr) { doSomething() } else { doNothing() } 我假设它是一个布尔返回,但它是如何工作的呢 谢谢 如果封装的BSTR字符串为NULL,则返回true。所以!!如果封装的BSTR字符串不是NULL,,则mybstr将为true不是运算符。这只是的两个应用程序操作员。对于普通的bool值,净效果是不可操作的。对于具有到bool的隐式转换的类型,它有时用于强制转换到bool。对于带有运算符

我想知道接线员的回报是什么!!关于C++中的<代码> 例如:

if (!!mybstr)
{
doSomething()
} else {
doNothing()
}
我假设它是一个布尔返回,但它是如何工作的呢


谢谢

如果封装的
BSTR
字符串为
NULL
,则返回
true
。所以
!!如果封装的
BSTR
字符串不是
NULL
,则mybstr
将为
true
不是运算符。这只是
的两个应用程序操作员。对于普通的
bool
值,净效果是不可操作的。对于具有到
bool
的隐式转换的类型,它有时用于强制转换到
bool
。对于带有
运算符的类型重载,根据
操作符的语义,它可以做任何事情

如果您查看:

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


所以如果你做了两次,那么你首先检查它是否为非空,然后如果不是,那么你基本上是在检查
if(bstr)

没有操作符
。它实际上是两个连续的
操作符。虽然它看起来像是这样的,但应用两次的“操作符”并不总是与“操作符布尔”相同,有些C++类只提供一个而不是另一个。
if (!!mybstr) = if (!(!mybstr)) = if (mybstr)