从std :: string中删除连续的重复字符

时间:2014-02-05 00:47:05

标签: c++ string

我目前正在尝试删除重复的字符。例如:

  • maaaaaaa成为ma
  • aaaaassssdddddd成为asd

我写了以下代码:

string.erase(remove(string.find_first_of(string[i]) + 1, string.end(), string[i]), string.end());

但显然std :: string返回一个指向字符串最后+ 1个字符的指针,而不是大小,是否有任何想法如何从字符串旁边的位置开始从字符串中删除string [i]? / p>

1 个答案:

答案 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());