XE6 How do you check if a UnicodeString is null?

蹲街弑〆低调 提交于 2019-12-14 03:53:54

问题


I'm using C++ Builder XE6. I'm getting a UnicodeString as a parameter and I wish to check if the string is set to NULL, and not an empty string.

I've tried to do some simple compares to see if the param is null, but seem to be failing. I'm using the == operator which doesn't seem to be working, which makes me think it is overloaded.

I've tried:

if (searchString == NULL)

In the debugger view, it shows the value of { NULL } in the local variables. If I add the variable to the watch list, then it shows it has a property of "Data" which is NULL.

Any ideas on how I can properly do the compare?


回答1:


There is no such thing as a NULL value for a UnicodeString. A string is a series of characters, but NULL is a pointer (well - actually it is a macro that evaluates to an int, 0, but it is supposed to be used to indicate null pointers if your compiler doesn't support nullptr).

Internally, the data member of UnicodeString is NULL when the string is empty, and non-NULL when the string has at least 1 character.

To check if the string is empty, use the IsEmpty() method, which checks if the data member is NULL or not. There is only one empty state; there is no distinction between "empty" and "null" like some languages have.

The value you see in the debugger is the internal data member of UnicodeString, it is not a part of UnicodeString's interface. When you see NULL in the debugger, you should treat it as being an empty string.



来源:https://stackoverflow.com/questions/25294762/xe6-how-do-you-check-if-a-unicodestring-is-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!