ваш код заменяет каждый пробел 4 пробелов одним пробелом.Поскольку шаблон 4 пробелов встречается несколько раз, вы снова получаете несколько (одиночных) пробелов в выводе.
Я не уверен, чего вы пытаетесь достичь.Но чтобы стереть все пробелы, лучше использовать erase_all_copy()
.Или чтобы удалить все 4 пробела, вы должны следовать совету Potatoswatters.
#include <iostream>
#include <string>
#include<boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/erase.hpp>
using namespace std;
int main(void) {
string s4="Hai ad asdasd asdasd";
cout << boost::algorithm::erase_all_copy( s4, " " ) << endl;
cout << boost::algorithm::replace_all_copy( s4, " ", "") << endl;
}
Или ваша цель - убрать все пробелы между словами, кроме одного?