XE6 Как проверить, является ли UnicodeString нулевым?

Я использую C++ Builder XE6, Я получаю UnicodeString в качестве параметра, и я хочу проверить, если строка имеет значение NULL, а не пустая строка.

Я попытался сделать несколько простых сравнений, чтобы увидеть, является ли параметр нулевым, но, похоже, он не работает. Я использую == оператор, который, кажется, не работает, что заставляет меня думать, что он перегружен.

Я пробовал:

if (searchString == NULL)

В представлении отладчика это показывает значение { NULL } в локальных переменных. Если я добавлю переменную в список наблюдения, то она покажет, что у нее есть свойство "Данные", которое NULL,

Любые идеи о том, как я могу правильно сделать сравнение?

1 ответ

Решение

Там нет такого понятия, как NULL значение для UnicodeString, Строка - это серия символов, но NULL это указатель (ну - на самом деле это макрос, который оценивает в int, 0, но он должен использоваться для указания нулевых указателей, если ваш компилятор не поддерживает nullptr).

Внутренне data член UnicodeString равно NULL, если строка пуста, и не равно NULL, если строка имеет хотя бы 1 символ.

Чтобы проверить, является ли строка пустой, используйте IsEmpty() метод, который проверяет, если data член НЕДЕЙСТВИТЕЛЕН или нет. Есть только одно пустое состояние; нет различия между "пустым" и "нулевым", как в некоторых языках.

Значение, которое вы видите в отладчике, является внутренним data член UnicodeStringне является частью UnicodeStringИнтерфейс. Когда вы видите NULL в отладчике, вы должны рассматривать его как пустую строку.

Другие вопросы по тегам