XE6如何检查UnicodeString是否为空?

时间:2014-08-13 19:41:37

标签: c++builder unicode-string c++builder-xe6

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

我尝试做一些简单的比较,看看param是否为null,但似乎失败了。我正在使用似乎不起作用的==运算符,这让我觉得它已经过载了。

我试过了:

if (searchString == NULL)

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

enter image description here

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

1 个答案:

答案 0 :(得分:8)

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

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

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

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