Ciao a tutti, mi sono appena iscritto per chiedere il vostro aiuto.
Sto imparando il c++ e sto facendo alcune esercitazioni relative alla gestione dei file. In pratica vorrei scrivere un programma che prende in input dei dati di n studenti (nome, matricola e voto) e li inserisce in un file che può essere poi utilizzato in seguito.
Vi posto il codice che ho scritto:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main(){
string nome;
string matricola;
int voto,n;
fstream file;
file.open("elenco_studenti.txt");
if(!file){
cout<<"Impossibile aprire il file";
return 1;
}
cout<<"Quanti studenti vuoi inserire? ";
cin>>n;
for(int i=0;i<n;i++){
cout<<"Inserisci i dati del "<<i+1<<" studente:"<<endl;
cout<<"Nome e cognome: ";
getline(cin,nome);
file<<nome<<";";
cout<<"Matricola: ";
getline(cin,matricola);
file<<matricola<<";";
cout<<"Voto esame: ";
cin>>voto;
file<<voto<<";";
}
return 0;
}
il codice non è commentato perchè si tratta di poche righe e credo che sia di immediata comprensione. Innanzitutto vorrei sapere se ho utilizzato getline in modo appropriato. L'ho usato perchè ho la necessità di salvare nella variabile "nome" anche lo spazio tra nome e cognome e dunque non ho potuto usare un semplice "cin>>nome".Analogo discorso per la matricola. Ad ogni modo a runtime ho il seguente problema: dopo aver inserito n (numero di studenti da inserire nel file) il programma non mi fa inserire il nome, ma esclusivamente matricola e voto. Vi posto anche un esempio d'uso:
Quanti studenti vuoi inserire? 3
Inserisci i dati del 1o studente:
Nome e cognome: Matricola: n12345
Voto:22
Inserisci i dati del 2o studente:
Nome e cognome: Matricola: n67890
Voto:26
e così via per tutti gli n studenti.
Non ho problemi invece con la matricola, che è comunque di tipo string e per la quale ho utilizzato allo stesso modo la getline;
Infine vi posto il file modificato dal programma dopo l'esecuzione:
;n12345;22;;n67890;26;;n34567;30;
Vi prego di non infierire perchè sono un novellino!!!
Grazie a tutti in anticipo