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

abh*_*net 6 c++ string

有没有办法从字符串中删除重复的字符,就像它们可以从矢量中删除,如下所示

sort( vec.begin(), vec.end() );
vec.erase( unique( vec.begin(), vec.end() ), vec.end() );
Run Code Online (Sandbox Code Playgroud)

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

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

Kon*_*lph 13

C++算法和容器设计的重点在于算法尽可能与容器无关.

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

std::sort(str.begin(), str.end());
str.erase(std::unique(str.begin(), str.end()), str.end());
Run Code Online (Sandbox Code Playgroud)

同样的东西甚至适用于旧式的C字符串 - 只有你不能用erase它们尾巴的小差别,你需要通过重新设置空终止字符来手动截断它们(并且没有beginend成员函数所以你使用指针到第一个和最后一个字符).