Dies ist ein Programm, das ein Inventar von Büchern aus einer Textdatei lesen soll (jede Zeile der Textdatei enthält ein anderes Feld in der richtigen Reihenfolge für jedes Buch)). Aus irgendeinem Grund wird die Routine unendlich fortgesetzt. Die "eof" -Fehlerüberfüllung scheint das Ende der Datei nicht zu erfassen. Kann jemand mir eine Idee geben, was falsch ist? Bitte denken Sie daran, ich bin ein echter Neuling in der C++ Welt, aber kein Neuling für die Programmierung.Lesen von Daten aus einer Textdatei in eine C++ - Struktur
Zuerst wird die Struktur Definition für Buch
// structure definition
struct Book
{ string isbn;
string title;
string author;
string publisher;
int quantity;
float price; };
ich die richtigen Header-Dateien enthalten sind. Unten ist die Routine, die scheinbar nicht funktioniert. Ich habe einen Cout eingefügt < < "machte es in Linie 1" endl; Code, um den Fortschritt der Routine zu sehen, und wiederholt einfach das Abrufen von Daten aus der Textdatei. Die Textdatei enthält nur 6 Bücher, daher sollte das Lesen der Textdatei ziemlich schnell beendet werden.
Vielen Dank, bitte, für jede Hilfe!
void readInventory(string fileName, vector<Book>& inventory)
{
ifstream instream;
// tries to open the file
instream.open(fileName);
// checkes if the file is open
if (instream)
{
// string line;
// reads through the file line by line
while (!instream.eof())
{
Book newBook;
// read book from text file
instream >> newBook.isbn;
instream >> newBook.title;
instream >> newBook.author;
instream >> newBook.publisher;
instream >> newBook.quantity;
instream >> newBook.price;
// add this book to inventory
inventory.push_back(newBook);
}
instream.close();
showMessage(to_string(inventory.size()) + " books were successfully added to inventory");
}
// if failed to open the file
else
showMessage("Cannot open the file. Make sure the file name is correct");
}
Problem 1. 'instream.eof()' -Siehe https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong. PS: Entfernen Sie die Lebensgeschichte am Anfang - es ist nicht das intereting –
Sind alle Daten von struct in Datei in einer neuen Zeile, isbn, Titel sind die gleiche Zeile? –
Überprüfen Sie diese Frage auch https://stackoverflow.com/questions/6512173/ifstream-not-reading-eof-character –