Dies ist ein einfacher Code zum Registrieren von Spielen in einer Datei, aber es gibt zwei Probleme.Fstream speichert nicht das letzte Wort in der Datei und es liest auch nicht aus der Datei
Zuerst wird der Parameter oder das Attribut "Klassifikation" nicht in der Datei gespeichert.
Und zweitens, wenn ich von der Datei lesen, wird der Inhalt nicht angezeigt.
Bevor Sie kommentieren, müssen Sie wissen, dass dies das erste Mal ist, dass ich mit Dateien arbeite und ich versuche, es selbst zu lernen.
Und ich weiß, dass dieser Code fehlt der Modularität und ich sollte einen Vektor von Zeigern von Objekten, nicht zu Objekten, oder ich sollte Smart-Zeiger, aber ich wollte Ihnen nur das Problem, das ich mit der Datei haben.
Jede Hilfe ist wirklich
geschätzt#include <iostream>
#include <vector>
#include <fstream>
#include <string>
using std::string;
using std::cout;
using std::vector;
using std::cin;
using std::endl;
using std::getline;
using std::fstream;
struct Games
{
string name;
string gender;
string clasification;
int year;
};
struct VectorGames
{
vector<Games>VectorForGames;
void InsertGame(string n, string g, string c, int y)
{
Games New = Games();
New.name = n;
New.gender = g;
New.clasification = c;
New.year = y;
VectorForGames.push_back(New);
}
};
int main()
{
string name;
string gender;
string clasification;
int year = 0;
int option = 0;
VectorGames V;
fstream File("SavedGames.txt", fstream::in | fstream::out | fstream::app | fstream::ate);
do
{
cout << "1. Register a game " << endl
<< "2. Show the list of games registered" << endl
<< "3. Exit " << endl;
cout << "Type in your option: ";
cin >> option;
cin.get();
switch (option)
{
case 1:
{
cout << "Type in the name: ";
getline(cin, name);
cout << "Type in the gender: ";
getline(cin, gender);
cout << "Type in the clasification: ";
getline(cin, gender);
cout << "Type in the year: ";
cin >> year;
V.InsertGame(name, gender, clasification, year);
if (File.is_open())
File << "Name: " << name << " Gender: " << gender
<< " Clasification: " << clasification << " Year: " << year << endl;
break;
}
case 2:
{
string temporal;
while (getline(File, temporal))
{
cout << temporal << endl;
}
break;
}
case 3: File.close();
break;
default: cout << "Try again" << endl;
}
} while (option != 3);
return 0;
}
Könnten Sie sich das bitte ansehen? http://stackoverflow.com/help/mcve Ich würde auch empfehlen, zu lernen, wie Dateiströme arbeiten, bevor sie in eine Anwendung integriert werden. Versuchen Sie, ein Programm zu schreiben, das nur eine einzelne Zahl aus einer Datei liest und sie an den Benutzer ausgibt. Es gibt eine Menge Sachen, die repariert werden müssen, aber Sie sollten wahrscheinlich über verschiedene Elemente lernen, bevor Sie tatsächlich weitere Funktionen hinzufügen. –
Danke für das Kommentieren in meinem Beitrag. – Drako
Können Sie mir bitte sagen, was ich beheben sollte, was ist falsch mit meinem Code neben dem, was ich oben beschrieben habe? – Drako