Я пишу программу для синтаксического анализа файла журнала, и решил быть как C ++ об этом, насколько это возможно, и я получил отладочное утверждение для этой строки —
sLine.erase(remove_if(sLine.begin(), sLine.end(), isspace), sLine.end());
Который, кажется, из-за символа -80 в 2000-й строке лог-файла.
Итак, я попробовал это
sLine.erase(remove_if(sLine.begin(), sLine.end(), [](char c) { return c >= -1 && c<=255; }), sLine.end());
Но этот фрагмент кода застрял без объяснения причин.
Итак, наконец, у меня есть три вопроса —
Спасибо за любую помощь!
Следующий код будет работать, если вы просто хотите стереть пробелы
sLine.erase (std :: remove_if (sLine.begin (), sLine.end (), [] (char c) {
возврат (c == »);
}), sLine.end ());
Других решений пока нет …