2016-12-11 2 views
0

token.erase(std::remove_if(token.begin(), token.end(), ispunct), token.end()); Кажется, что использование ispunct удалит все знаки препинания. Можно ли удалить только определенные типы? Например, если я хочу удалить все знаки препинания, кроме, например, двоеточия? Или вам нужно написать свое собственное условие в этом случае?C++ удаление определенных символов/знаков препинания

ответ

0

Используйте lambda(или вызываемый объект) как предикат вашего token.erase(...) вызова:

token.erase(
    std::remove_if(
     token.begin(), 
     token.end(), 
     [](char x){ return ispunct(x) && x != ':'; }), 
    token.end()); 
+0

Спасибо, это решило проблему очень эффективно! – user3221454

Смежные вопросы