В заданном предложении найти наибольшее количество идущих подряд пробелов

В заданном предложении найти наибольшее количество пробелов, что расположены подряд. Исключить из данного предложения длинные последовательности пробелов. 1 часть я уже решил , я просто не понял как решить 2-ю я знаю что мне надо использовать функцию erase .

#include <iostream>
#include <string>
using namespace std;
 
int main(){
string s;
cout<<"Enter text: ";
getline(cin,s);
int k = 0;
int max = 0;
int str = s.length();
for(int i = 0; i< str; i++){
    if(s[i] == ' '){
        k++;
    }else{
     k = 0;
    }if(k>max){
    max = k;
    }
}
 
cout<<s.erase(max);
return 0;
}

Ответы (1 шт):

Автор решения: Павел Ериков

Ну если я вас правильно понял, то у вас не получается удалить последовательность пробелов длинной max.

Строчкой:

s.erase(max);

Вы удаляете все символы начиная с индекса max.

А вам нужно удалить max символов начиная с начала последовательности.

Например при проверке:

if(k > max){
    max = k;
    index = i;
}

index - индекс последнего символа в самой длинной последовательности.

И далее пишите так:

cout << s.erase(index - max, max);

То есть index - max это индекс начала последовательности, max это кол-во сколько нужно удалить символов.

Поподробней про erase можно почитать тут

Пример выхода программы:

Enter text: Privet  mir        kak dela    ?
Privet  mi kak dela    ?
→ Ссылка