как создать условную точку останова со станд.:: строка

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

void str_trim(char *output, const char *text, int32 max_len)
{
    int32 i, j, length;
    length = strlen(text);

    if (max_len < 0) {
        max_len = length + 1;
    }

    for (i=0; i<length; i++) {
        if ( (text[i] != ' ') && (text[i] != '\t') && (text[i] != '\n') && (text[i] != '\r')) {
            break;
        }
    }

    if (i == length) {
        // handle lines that are all whitespace
        output[0] = 0;
        return;
    }

    for (j=length-1; j>=0; j--) {
        if ( (text[j] != ' ') && (text[j] != '\t') && (text[j] != '\n') && (text[j] != '\r')) {
            break;
        }
    }

    length = j + 1 - i;
    strncpy(output, text + i, length);
    output[length] = 0;
}

, если операторы в циклах могут, вероятно, быть заменены isspace (текст [я]) или isspace (текст [j]) для создания строк немного легче читать. Я думаю, что сделал, чтобы они установили этот путь, потому что были некоторые символы, на которые я не хотел тестировать, но похоже, что я покрываю весь пробел теперь:-)

70
задан Jarod42 11 January 2017 в 15:50
поделиться

1 ответ

Некоторый поиск не нашел способа сделать это. Предлагаемые альтернативы - поместить тест в ваш код и добавить стандартную точку останова:

if (myStr == "xyz")
{
    // Set breakpoint here
}

Или построить тест на основе сравнения отдельных символов. Даже смотреть на отдельные символы в строке немного рискованно; в Visual Studio 2005 мне пришлось копаться в переменных-членах вроде

myStr._Bx._Buf[0] == 'x' && myStr._Bx._Buf[1] == 'y' && myStr._Bx._Buf[2] == 'z'

Ни один из этих подходов не является удовлетворительным. У нас должен быть лучший доступ к повсеместной функции стандартной библиотеки.

44
ответ дан 24 November 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: