В настоящее время я пытаюсь удалить повторяющиеся символы. Например:
Я написал следующий фрагмент кода:
string.erase(remove(string.find_first_of(string[i]) + 1, string.end(), string[i]), string.end());
но, по-видимому, std :: string возвращает указатель на последний + 1 символ строки, а не размер, любые идеи, как я мог удалить строку [i] из моей строки, начиная с позиции рядом с этим символом?
string.find_first_of
возвращает целочисленную позицию (и string::npos
если не найден). Это несовместимо с std::remove
, который ожидает итераторов. Вы можете конвертировать из позиции в итератор, добавив позицию в начало итератора.
char to_remove = string[i];
auto beg = string.begin() + string.find_first_of(to_remove) + 1;
auto new_end = std::remove(beg, string.end(), to_remove);
string.erase(new_end, string.end());