我正在使用C++ Builder XE6
。我得到UnicodeString
作为参数,我希望检查字符串是否设置为NULL,而不是空字符串。
我尝试做一些简单的比较,看看param是否为null,但似乎失败了。我正在使用似乎不起作用的==
运算符,这让我觉得它已经过载了。
我试过了:
if (searchString == NULL)
在调试器视图中,它显示局部变量中{ NULL }
的值。如果我将变量添加到监视列表,则表明它具有“数据”属性NULL
。
关于如何正确进行比较的任何想法?
答案 0 :(得分:8)
NULL
没有UnicodeString
值。字符串是一系列字符,但是NULL
是一个指针(很好 - 实际上它是一个计算为int 0
的宏,但它应该用于指示空指针,如果你的编译器不支持nullptr
)。
在内部,data
成员UnicodeString
在字符串为空时为NULL,在字符串至少有1个字符时为非NULL。
要检查字符串是否为空,请使用IsEmpty()
方法检查data
成员是否为NULL。只有一个空状态;像某些语言一样,“空”和“空”之间没有区别。
您在调试器中看到的值是data
的内部UnicodeString
成员,它不是UnicodeString
界面的一部分。当您在调试器中看到NULL时,您应将其视为空字符串。