用一个char替换字符串中的多个字符

Ale*_*kin 4 c++ stl

用一个char替换字符串中多个字符的最佳方法是什么?

string str("1   1     1");

//out: 1 1 1
Run Code Online (Sandbox Code Playgroud)

Ben*_*ley 8

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

这不仅仅适用于空间.例如,字符串"aaabbbcccddd"将变为"abcd".那是你要的吗?如果您只想将空间减少到一个空格,可以将二元谓词作为第三个参数传递给std::unique,如下所示:

bool BothAreSpaces(char lhs, char rhs)
{
    return (lhs == ' ') && (rhs == ' ');
}
Run Code Online (Sandbox Code Playgroud)