C++ de la lecture d'un fichier dans une struct

À l'aide de fstreams j'ai un fichier ouvert qui contient de nombreuses lignes. Chaque contiguos ensemble de 4 lignes sont telles que: la première ligne est un int, le deuxième et le troisième sont des chaînes de caractères et le quatrième est un double. Cette séquence se poursuit jusqu'à l'EOF.

Je suis une tentative de chargement de ces lignes dans un struct tableau:

struct Library {
    int id;
    string title;
    string artist;
    double price;
};

et le code que j'essaie de mettre en œuvre pour charger les données dans la structure est ceci:

const int LIMIT = 10
Library database[LIMIT];
ifstream file;
file.open("list.txt");

if(file) {
    while(!(file.eof()) && counter < LIMIT) {
        file >> database[counter].id;
        getline(file, database[counter].title;
        getline(file, database[counter].artist;
        file >> database[counter].price;
    }
} else {
   ...
}

//Using the following to debug output
for(int i = 0; i < counter; i++) {
    cout << "ID:     " << database[i].id << endl
         << "Title:  " << database[i].title << endl
         << "Artist: " << database[i].artist << endl
         << "Price:  " << database[i].price << endl
         << "-----------------------" << endl;
}

Le fichier que je suis en train de jeter cette chose est

1234
Never Gonna Give You Up
Rick Astley
4.5
42
Thriller
Michael Jackson
32.1

Le problème, je vais avoir ici, c'est que entre la lecture de la id et title à l'aide de file >> ... et getline(...) c'est que quelque part un retour à la ligne morsure est introduite vissage jusqu'à la sortie, qui affiche cette monstruosité...

ID:     1234
Title:  
Artist: Never Gonna Give You Up
Price:  0
--------------------
ID:     0
Title:  
Artist:
Price:  0
--------------------

La solution est probablement la plus simple des solutions, mais surtout parce que je ne peux pas savoir exactement ce qui se passe avec la nouvelle ligne de morsure je ne peux pas combobulate une phrase à s'engouffrer dans google et faire mes trucs, et j'en suis au stade où j'ai été à la recherche à un problème si longtemps, les connaissances de base ne fonctionne pas correctement, par exemple pour gérer les flux d'entrée.

Toute forme d'aide serait grandement appréciée! Merci d'avance 🙂

InformationsquelleAutor SteppingHat | 2015-06-08