Заменить несколько символов в строке одним символом - PullRequest
4 голосов
/ 24 декабря 2011

Какой лучший способ заменить несколько символов в строке одним символом?

string str("1   1     1");

//out: 1 1 1

1 Ответ

8 голосов
/ 24 декабря 2011
str.erase(
    std::unique(str.begin(), str.end()),
    str.end());

Это будет работать не только на пробелах.Например, строка «aaabbbcccddd» станет «abcd».Это то, что вы хотите?Если вы просто хотите уменьшить количество пробелов до одного пробела, вы можете передать двоичный предикат в качестве третьего аргумента std::unique, например:

bool BothAreSpaces(char lhs, char rhs)
{
    return (lhs == ' ') && (rhs == ' ');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...