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++;
}
}

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)