使用STL从字符串中删除重复的字符

时间:2014-01-14 18:37:29

标签: c++ string

有没有办法从字符串中删除重复字符,就像可以从矢量中删除

sort( vec.begin(), vec.end() );
vec.erase( unique( vec.begin(), vec.end() ), vec.end() );

或者我只需为它编写基本解决方案? 我的想法是什么:

我可以将所有字符添加到集合

1 个答案:

答案 0 :(得分:13)

C ++算法和容器设计的全部意义在于 - 算法尽可能与容器无关。

所以同样适用于矢量的算法 - 当然! - 关于字符串。

std::sort(str.begin(), str.end());
str.erase(std::unique(str.begin(), str.end()), str.end());

同样适用于旧式C字符串 - 由于它们不能erase它们的尾部差别很小,您需要通过重新设置空终止字符来手动截断它们(并且没有{{ 1}}和begin成员函数,因此您可以使用指向第一个和最后一个字符的指针。