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 в отладчике, вы должны рассматривать его как пустую строку.