2016-09-18 2 views
-1

Ich bin derzeit in einer C++ - Datenstrukturen-Klasse und ich bin extrem neu in C++. Mein Ziel ist es, Zeilen aus einer Datei zu lesen und in einer Struktur zu speichern. Die Zeilen enthalten Elemente eines Buches. Mein Problem ist, dass einige Zeilen Leerzeichen haben, und ich bin mir nicht sicher, wie man sie richtig in eine Struktur einliest. Ich kann nicht scheinen, getline() richtig zu verwenden, um die Linien in jedes Element der Struktur zu lesen. Wenn ich es so laufe, bekomme ich die Nachricht error: expected primary expression before 'infile'. Entschuldigung, wenn dieser Post nicht korrekt formatiert ist, ist dies auch mein erster Stack-Overflow-Post! Irgendeine Hilfe?? DieseVerwenden von getline(), um Eingabe (mit Leerzeichen) aus Datei in eine Struktur zu lesen

ist, was meine Struktur wie folgt aussieht:

typedef struct book { 
    char title[100]; 
    char author[100]; 
    char publisher[100]; 
    float price; 
    char isbn[100]; 
    int pages; 
    int copies; 
} Book; 

Und das ist, wie ich versuche, Zeilen in die Struktur zu lesen:

for (int i=0; i < currentIndex; i++) { 
    getline(ifstream infile, my_book[i].title); 
    getline(ifstream infile, my_book[i].author); 
    getline(ifstream infile, my_book[i].publisher); 
    getline(ifstream infile, my_book[i].price); 
    getline(ifstream infile, my_book[i].isbn); 
    getline(ifstream infile, my_book[i].pages); 
    getline(ifstream infile, my_book[i].copies); 
    currentIndex++; 
} 

Die Textdatei haben wird als solche Buchinformationen aufgelistet :

Magician: Apprentice 
Raymond E. Feist 
Spectra (January 1, 1994) 
5.02 
0553564943 
512 
1 
+0

das Wort entfernen 'ifstream' infront' infile'. – kfsone

+0

ist es eine schlechte Übung, dies zu tun. schreibe Strukturen in eine Datei und lies Struktur aus Dateien zurück. – Raindrop7

+0

@ Raindrop7 Wer sagt das, und warum eigentlich? Könnten Sie bitte näher darauf eingehen? –

Antwort

1

1 - deklarieren Sie zuerst infile außerhalb für Schleife dann verwenden Sie es.

2 - getline (infile, Buch [i] ....) ist nicht infile.getline (Buch [i] ..., Größe, ..) die erste wird mit der Klasse Zeichenfolge verwendet und die zweite ist Wird mit einem Array von Zeichen verwendet.

so kann Ihr Programm wie folgt aussehen:

ifstream infile("data.txt", ios::in); // your data file 

for (int i=0; i < currentIndex; i++) 
{ 
     infile.getline(my_book[i].title , 100, '\n'); 
     infile.getline(my_book[i].author , 100, '\n'); 
     infile.getline(my_book[i].publisher, 100, '\n'); 
     infile >> my_book[i].price; 
     infile.getline(my_book[i].isbn  , 100, '\n'); 
     infile >> my_book[i].pages; 
     infile >> my_book[i].copies; 
     currentIndex++; 
} 
+0

Das hat definitiv geholfen !! Jetzt ist meine Ausgabe ein bisschen wackelig, aber ich muss zur Arbeit gehen und werde danach damit herumspielen. Vielen Dank! – jwest91

+0

@ jwest91 ok. herzlich willkommen. bitte, wenn es wirklich hilfreich war, als akzeptierte Antwort zu markieren – Raindrop7

Verwandte Themen