XE6如何检查UnicodeString是否为空?

Jam*_*vec 3 c++builder unicode-string c++builder-xe6

我正在使用C++ Builder XE6.我得到一个UnicodeString参数,我想检查字符串是否设置为NULL,而不是一个空字符串.

我试图做一些简单的比较,看看param是否为null,但似乎失败了.我正在使用==似乎没有工作的运算符,这让我觉得它超载了.

我试过了:

if (searchString == NULL)
Run Code Online (Sandbox Code Playgroud)

在调试器视图中,它显示{ NULL }局部变量的值.如果我将变量添加到监视列表,则表明它具有"数据"属性NULL.

在此输入图像描述

关于如何正确进行比较的任何想法?

M.M*_*M.M 8

没有NULL价值的东西UnicodeString.字符串是一系列字符,但它NULL是一个指针(很好 - 实际上它是一个计算为int的宏0,但如果你的编译器不支持,它应该用于指示空指针nullptr).

在内部,当字符串为空时,data成员UnicodeString为NULL,当字符串具有至少1个字符时,成员为非NULL.

要检查字符串是否为空,请使用IsEmpty()方法检查data成员是否为NULL.只有一个空状态; 像某些语言一样,"空"和"空"之间没有区别.

您在调试器中看到的值是内部data成员UnicodeString,它不是UnicodeString接口的一部分.当您在调试器中看到NULL时,您应该将其视为空字符串.