3

我正在使用C++ Builder XE6. 我得到 aUnicodeString作为参数,我希望检查字符串是否设置为 NULL,而不是空字符串。

我试图做一些简单的比较来查看参数是否为空,但似乎失败了。我正在使用==似乎不起作用的运算符,这让我觉得它超载了。

我试过了:

if (searchString == NULL)

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

在此处输入图像描述

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

4

1 回答 1

9

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

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

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

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

于 2014-08-13T20:16:00.937 回答