remove_if принимает 3 аргумента, а не 4, поэтому вся ваша строка erase()
испорчена.
Обратите внимание также, что третий аргумент является Predicate
, поэтому вместо передачисимвол, который вы хотите удалить, '\''
, вы передадите функцию, которая возвращает bool
для типа, который повторяется:
bool isApostrophe(char c) { return c == '\''; }
...
deleteapostr.erase(std::remove_if(deleteapostr.begin(), deleteapostr.end(), isApostrophe), deleteapostr.end());
РЕДАКТИРОВАТЬ: std::remove
Вероятно, лучше для этого случая, но я оставил его как std::remove_if
, так как это то, с чего вы начали, и это также дает вам возможность изменить предикат на что-то вроде isPunctuation
.