Salve, in questo programma voglio leggere in ingresso anche dei nomi e dei cognomi con gli spazi. Come devo fare? Quando metto lo spazio passa in automatico alla successiva cin.
Ho già provato con la gets e la getline ma mi da lo stesso errore. Come posso modificare?
GRAZIE MILLE IN ANTICIPO

codice:
#include <iostream>


using namespace std;


struct anagrafica {
	string nome;
	string cognome;
	int eta;
	string dataNascita;
	int classe;
	char sezione;
	string valido = "falso";
};


void Inserisci(anagrafica persona[], int quantita) {
	int i;
	
	for (i=0;i<quantita;i++) {
		cout << endl;
		cout << "Nome: ";
		cin >> persona[i].nome;
		cout << "Cognome: ";
		cin >> persona[i].cognome;
		cout << "Eta': ";
		cin >> persona[i].eta;
		cout << "Data di nascita: ";
		cin >> persona[i].dataNascita;
		cout << "Classe: ";
		cin >> persona[i].classe;
		cout << "Sezione: ";
		cin >> persona[i].sezione;
		cout << "Valido: (inserire in minuscolo vero o falso): ";
		cin >> persona[i].valido;
		cout << endl;
	}
	
}


void Visualizza(anagrafica persona[], int quantita) {
	int i;
	
	for (i=0;i<quantita;i++) {
		cout << endl;
		cout << "Nome: " << persona[i].nome << endl;
		cout << "Cognome: " << persona[i].cognome << endl;
		cout << "Eta': " << persona[i].eta << endl;
		cout << "Data di nascita: " << persona[i].dataNascita << endl;
		cout << "Classe:" << persona[i].classe << endl;
		cout << "Sezione: " << persona[i].sezione << endl;
		cout << "Valido: " << persona[i].valido << endl;
		cout << endl;
	}	
}




void Azzera(anagrafica persona[], int quantita) {
	int i;
	for (i=0;i<quantita;i++) {
		persona[i].nome = "**********";
		persona[i].cognome = "**********";
		persona[i].eta = (int)NULL;
		persona[i].dataNascita = "**/**/****";
		persona[i].classe = (int)NULL;
		persona[i].sezione = (char)NULL;
		persona[i].valido = "falso";
	}
}


int main() {


	anagrafica studenti[50]; //creazione vettore di capienza 50 che conterrà i records di tipo anagrafica
	int quanti = 0;
	int scelta; //variabile che contiene il valore della scelta dell'operazione da eseguire nel programma
	bool ripeti = true; //variabile che rimane vera ogni volta che voglio far ripetere la visualizzazione del menu
	
	while (ripeti == true) { //fintanto che la condizione è vera... esegui tutto quello che sta dentro il while
		
		cout << "1) Azzera tutto" << endl;
		cout << "2) Inserisci" << endl;
		cout << "3) Visualizza" << endl;
		cout << "4) Termina programma" << endl;
		cout << endl;
		
		cout << "Operazione da fare: ";
		cin >> scelta; //leggo il numero dell'operazione da eseguire
		
		if (scelta == 1) {
			Azzera(studenti, quanti);
			system("PAUSE"); //attesa di premere un tasto prima di pulire la schermata
		}
		
		if (scelta == 2) {
			cout << "Quanti records devi inserire? --> ";
			cin >> quanti;
			Inserisci(studenti, quanti);
		}
		
		if (scelta == 3) {
			Visualizza(studenti,quanti);
			system("PAUSE");
		}
		
		if (scelta == 4) {
			ripeti = false;
			system("PAUSE");
		}
		
	}	
	return 0;
}