Esercizio 5
Scrivi un programma C++ nel quale siano eliminati tutti gli spazi superflui all'interno di una stringa.
Usiamo una stringa di test dove al posto degli spazi usiamo il
carattere underscore "_" per rendere più efficace
la lettura della stringa sui caratteri da eliminare.
Inizialmente, tramite un ciclo while() eliminiamo tutti i caratteri indesiderati
all'interno della stringa. Si notano le due istruzioni
if(s[s.size()-1]=='_') s.erase(s.size()-1,1);
che eliminano eventuali spazi agli estremi della stringa. Infine la variabile contatore c viene usata per contare le parole all'interno della stringa.
#include<iostream>
#include<string>
using namespace std;
main(){
string s ("__alfa__beta_____gamma___");
int i=0,c=1;
bool trovato;
while(i<s.size()){
trovato=false;
if(s[i]=='_' && s[i+1]=='_'){
s.erase(i,1);
trovato=true;
}
if(trovato==false)i++;
}//fine while
if(s[0]=='_')s.erase(0,1);
if(s[s.size()-1]=='_')s.erase(s.size()-1,1);
for(i=0;i<s.size();i++)if(s[i]=='_')c++;
cout << s<<endl;
cout<<c<<" parole" ;
} //fine main
Se volessimo usare questo algoritmo per eliminare degli spazi basterebbe sostituire nel codice il carattere " " al carattere "_".