Как поставить условную точку останова для проверки, если переменная CString пуста - PullRequest
1 голос
/ 08 августа 2011

Итак, у меня есть простой фрагмент кода:

CString str;
..................
if ( str.IsEmpty() )
   str = spRelease->GetID();

Я хочу поставить условную точку останова в последнюю строку, чтобы проверить, пусто ли значение str. Я попробовал это сначала:

str == ""

Но я получаю это:

Error overloaded operator not found

Тогда это:

str.isEmpty() == 0

И получите это:

Symbol isEMpty() not found

Есть идеи, как это можно сделать? Есть обходной путь?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 08 августа 2011

Почему бы вам просто не поставить нормальную точку останова на последней строке?Вы уже знаете, что ул пуст.Если вы хотите дважды проверить, пуста ли ваша строка, я бы использовал вместо этого ASSERT.

Если вам действительно нужно проверить вашу строку, вы должны проверить m_pszData в вашей CString, чтобы ваше состояние выглядело какэто:

str.m_pszData[0] == '\0'
1 голос
/ 08 августа 2011

В Visual Studio 6 у вас есть операция IsEmpty (), обратите внимание, что первое «I» - это верхний регистр.У вас также есть операция Compare ().Какую версию VS вы используете?

0 голосов
/ 08 августа 2011

Один шаблон, который я видел для таких вещей, это добавить немного кода, подобного этому:

if (some_condition) {
   int breakpoint=rand();
}

Это генерирует предупреждение о инициализации breakpoint, но не используемой, так что это легконе забудьте взять его обратно.Это также позволяет вам тестировать любые условия, которые вы хотите, в том числе вызывать функции или что-то еще, не беспокоясь о восстановлении отладчика.Это также позволяет избежать ограничения на количество условных точек останова, которые могут иметь некоторые отладчики.

Очевидные недостатки: вы не можете добавить один во время сеанса отладки, перекомпилировать, не забывая удалить их и т. Д..

...