Ich versuche, ein Inventar-Programm zu erstellen. Sie müssen ios :: app hinzufügen, um Daten in der Datei inventory.txt nicht wie bei ios :: out zu überschreiben, aber wenn ich ios :: app hinzugefügt habe, werden die Daten in beschädigter/müll gelesen.C++ fstream lesen von Datei geben Müll
Ich denke, das Problem läuft auf diese Zeile herunter: outfile.open ("inventory.txt", ios :: out | ios: app | ios :: binary);
Ich habe die Funktion eingefügt, die mir unten Probleme gibt.
Danke !!
void add() {
Inventory Item;
int recnum;
ofstream outfile;
// opening file
outfile.open("inventory.txt", ios::out | ios:app | ios::binary);
if (outfile.fail())
cout << "\nFile failed to open" << endl;
cout << "\nPlease enter the record ID to be added (will overwrite duplicates) : ";
cin >> recnum;
cout << "\n" << recnum << " has been set as the record ID for this item." << endl;
cout << "Please enter item description in 50 characters or less : ";
cin.ignore();
cin.getline(Item.description, size);
// do-whiles below are for looping for input validation
do {
cout << "Please enter the number of items on hand : ";
cin >> Item.quantity;
if (Item.quantity < 0)
cout << "Please enter a valid number." << endl;
} while (Item.quantity < 0);
do {
cout << "Please enter the wholesale price for this item : ";
cin >> Item.wholesale;
if (Item.wholesale < 0.01)
cout << "Please enter a valid number." << endl;
} while (Item.wholesale < 0.01);
do {
cout << "Please enter the retail price for this item : ";
cin >> Item.retail;
if (Item.retail < 0.01)
cout << "Please enter a valid number." << endl;
} while (Item.retail < 0.01);
// couldn't figure out how to perform input validation for date
cout << "Please enter the date this item was added (format: mm/dd/yyyy) : ";
cin.ignore();
cin.getline(Item.dateadded, datesize);
// finding position in file, writing to file, closing file
outfile.seekp(recnum*sizeof(Item), ios::beg);
outfile.write(reinterpret_cast<char *>(&Item), sizeof(Item));
outfile.close();
}
Ihre Verwendung ofstream .... nicht ifstream .... –
Ihr Titel sagt Ihr Code „aus Datei lesen“, schreibt einen !? Auch was die Erklärung von 'Item' betrifft, habe ich den schleichenden Verdacht, dass es kein POD ist, an welchem Punkt du es nicht in eine Datei schreiben kannst, wie du es jetzt tust. – Borgleader
Hey Leute, Ja, aber das Problem, denke ich, tritt auf, wenn ich die Daten schreibe. Ich habe eine display() -Funktion, die ich danach aufrufen und es beginnt nur Anzeige von Müll, nachdem ich hinzugefügt ios :: app – Kubie