我目前正在尝试删除重复的字符。例如:
我写了以下代码:
string.erase(remove(string.find_first_of(string[i]) + 1, string.end(), string[i]), string.end());
但显然std :: string返回一个指向字符串最后+ 1个字符的指针,而不是大小,是否有任何想法如何从字符串旁边的位置开始从字符串中删除string [i]? / p>
答案 0 :(得分:1)
string.find_first_of
返回整数位置(如果未找到,则返回string::npos
)。这与期望迭代器的std::remove
不兼容。您可以通过将位置添加到begin迭代器来从位置转换为迭代器。
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());