str.erase(
std::unique(str.begin(), str.end()),
str.end());
Это будет работать не только на пробелах.Например, строка «aaabbbcccddd» станет «abcd».Это то, что вы хотите?Если вы просто хотите уменьшить количество пробелов до одного пробела, вы можете передать двоичный предикат в качестве третьего аргумента std::unique
, например:
bool BothAreSpaces(char lhs, char rhs)
{
return (lhs == ' ') && (rhs == ' ');
}