在字符串中用一个字符替换多个字符

4

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

string str("1   1     1");

//out: 1 1 1

你只是想让所有的空格序列变成一个单独的空格吗? - wkl
1个回答

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

这不仅适用于空格,对于字符串 "aaabbbcccddd",也会将其转换为 "abcd"。这是您想要的吗?如果您只想将多个空格缩减为一个空格,您可以将二元谓词作为第三个参数传递给 std::unique,像这样:
bool BothAreSpaces(char lhs, char rhs)
{
    return (lhs == ' ') && (rhs == ' ');
}

优秀地运用了标准算法! - Kerrek SB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接