2017-04-27 1 views
0

J'ai cherché pendant quelques heures maintenant, mais je n'ai pas encore rencontré mon problème. Je lis un fichier première ligne serait le nombre de films et les lignes après ce serait le titre du film, réalisateur, etc.Problèmes avec getline C++

Exemple:

2 
Friday Night Lights: Upcoming;Bond, James;2061;128;93000000;871530324 
Friday Night Lights: Upcoming;Bond, James;2061;128;93000000;871530324 

mais je ne peux pas sembler obtenir la fonction getline fonctionne correctement. Je l'ai essayé de différentes manières mais ça ne marche pas.

struct MovieData{ 
string movieTitle; 
string director; 
int yearReleased; 
double runningTime; 
double costOfProduction; 
double revenueGenerated; 
double profitOrLoss; 
}; 
void storingMovieData(ifstream file, MovieData array[], int numberOfMovies); 

int main(){ 
    char fileName[50]; 
    MovieData array[]; 
    cout << "Enter file name: "; 
    cin.getline(fileName, 50); 
    int numberOfMovies; 
    ifstream file(fileName); 
    file >> numberOfMovies; 
    storingMovieData(file, array, numberOfMovies) 

    file.close(); 

    return 0; 
} 

void storingMovieData(ifstream file, MovieData array[], int numberOfMovies){ 
    for(int i = 0; i < numberOfMovies; i++){ 
    getline(file, array[i].movieTitle, ';'); 
    getline(file, array[i].director, ';'); 
    getline(file, array[i].yearReleased, ';'); 
    getline(file, array[i].runningTime, ';'); 
    getline(file, array[i].costOfProduction, ';'); 
    getline(file, array[i].revenueGenerated, ';'); 
    getline(file, array[i].profitOrLoss, ';'); 
    } 
} 

Toute aide sur mon problème serait grandement appréciée!

+0

Quelle est la valeur de 'failbit' après avoir appelé' istream :: getline'? Avez-vous utilisé un débogueur pas à pas? – Dai

Répondre

0

Ce sont la racine de votre problème:

int yearReleased; 
double runningTime; 
double costOfProduction; 
double revenueGenerated; 
double profitOrLoss; 

getline() n'accepte pas de double/int.

Vous voudrez probablement lire certaines chaînes temporaires et les assigner à struct après la conversion en double.

+1

Merci. Je ne savais pas, mais maintenant je fais! – Austin