Как установить условную точку останова на основе сравнения строк в Visual Studio?

Это то, что я пытался время от времени на протяжении многих лет и никогда не удавалось. Я просто хочу установить условную точку останова для Visual C++ 2012 на основе равенства строк. Переменная, которую я хочу проверить

string test;

Я старался

test == "foo"
=> The breakpoint cannot be set. no operator "==" matches these operands

test == string("foo")
=> The breakpoint cannot be set. no operator "==" matches these operands

test.compare("foo") == 0
=> The breakpoint cannot be set. This expression has side effects and will not be evaluated.

strcmp(test.c_str(), "foo") == 0
=> The breakpoint cannot be set. This expression has side effects and will not be evaluated.

2 ответа

Решение

Для использования в Visual Studio, здесь дан ответ. В частности, строка, указанная в ответе OBWANDO, может использоваться для установки условия точки останова. Обратите внимание, однако, что это немного клюги. При достижении точки останова вы получите предупреждение, даже если отладчик остановлен. Похоже, это не причиняет вреда.

Вы можете использовать следующий портативный и простой способ:

if (!test.compare("foo")) {
    int dummy = 0; // any statement, put breakpoint here
}
Другие вопросы по тегам