c++ - 用一个字符替换字符串中的多个字符

标签 c++ stl

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

string str("1   1     1");

//out: 1 1 1

最佳答案

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

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

bool BothAreSpaces(char lhs, char rhs)
{
    return (lhs == ' ') && (rhs == ' ');
}

关于c++ - 用一个字符替换字符串中的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8625549/

相关文章:

c++ - std::ostringstream 覆盖初始化字符串

c++ - 让 ostream 打开

c++ - 动态 Qt 字符串翻译

c++ - 订购标准库容器类型的 static_assert() 的优雅方式?

集合的 C++ vector 在执行 push_back 后给出段错误

c++ - 如何在增量循环中构造 std::list 迭代器

c++ - 尝试在 C++ 中返回字符串数组时遇到错误

c++ - 将 void * 转换为类型的shared_ptr

c++ - 如何在 Visual Studio Code 中构建和运行 C++ 代码?

c++ - 为什么 C++ 不使用 C++ 元素/样式重新实现 C 标准函数?