3E e 3I SIA: Come usare gli array di stringhe contenenti spazi tra le parole in C++
Spesso abbiamo la necessità di memorizzare all'interno di un array stringhe con spazi tra le parole.
Se usiamo l'attributo string e inseriamo con "cin" il contenuto senza spazi, ad esempio "Lombardia" tutto procede senza errori.
Se invece scriviamo stringhe con spazi tra le parole, ad esempio "Emilia Romagna" il compilatore C++ non elabora altre istruzioni e salta tutto il resto, visualizzando le informazioni senza risultato.
Per ovviare a questo problema esistono due modi in C++.
Il primo è definire un array statico di char dichiarando sia gli elementi che la lunghezza dei singoli elementi.
Esempio array di 4 elementi e ogni elemento lungo 150 byte"
char studenti [4][100]= {"Mario Rossi", "Giovanni Bianchi", "Paolo Verdi", "Elio Ferrari"};
Il secondo modo è:
definire l'array char
char nome_e_cogmome[3];
e nell'inserimento usare prima l'istruzione per pulire il buffer e poi l'istruzione di inserimento
cin.sync();
// inserire la stringa con lo spazio all'interno di un array di stringhe
cin.getline(nome_e_cogmone, 200);
Esempio:
// inserire la stringa con lo spazio all'interno di un array di stringhe
#include <iostream>
#include <string>
using namespace std;
int main () {
char cognome_nome [4]; // dichiarazione di un array di caratteri di 4 elementi
for (i=0; i<4; i++) {
cout<<"Inserisci il nome e il cognome dello studente "<<i<<endl;
cin.sync(); // pulisci il buffer
cin.getline(nome_e_cogmone, 200); // iserisci una stringa max di 200 caratteri compresi gli spazi
}i=0;
cout<<"Stampa I nomi e i cognomi degli studenti "<<i<<endl;
cout<<" "<<endl;
cout<<" "<<endl;
while (i<4) {
cout<<" Nome e il cognome dello studente "<<i<<endl;
cout<<nome_e_cognome[i]<<endl;
i++;
}
}
cout<<" "<<endl;
cout<<" "<<endl;
while (i<4) {
cout<<" Nome e il cognome dello studente "<<i<<endl;
cout<<nome_e_cognome[i]<<endl;
i++;
}
}
Commenti
Posta un commento