Dateien aus klasse in Datei und wieder in klasse schreiben
-
Hey Leute,
sagen wir mal ich hab ne klasse welche eine kleine Musikliste darstellt. Die Liste enthält den Namen des Künstlers, den Namen des Liedes und das Erscheinungsjahr. Die Liste kann max. 100 Einträge aufnehmen. Nach dem Laden gespeicherter Daten möchte ich weitere Einträge hinzufügen.
Mein Problem liegt darin das, wenn ich die Daten gespeichert habe und sie wieder laden möchte die gespeicherten Daten geladen werden und die freien Plätze mit irgendwelchen Werten belegt werden (mit einer for-schleife gelöst).
Wie kriege ich das hin?????????????????
-
Hi!
Du nimmst eine for-Schleife mit den Parametern i = 0, i <= 100, i++. Und dann schreibst du in jedes Feld jeder Variablen in der struktur eine 0 ode ein Leerzeichen. Arbeitest du mit Stukturen? Fakt ist du musst als aller erstes jedes Feld der Verwedeten Arrays mit 0en oder Leerzeichen füllen und dann erst die Daten aus der Datei einlesen.
-
Ja ich habe eine Struktur:
BSP:
struct List
{
unsigned int year;
string (char) name, artist;
};Sollte ich für den Namen lieber ein String-Objekt oder ein array verwenden?
Frage wie füge ich Code ein
-
Is egal ob du ein string oder ein Array verwendest. Ich habe immer mit arrays programmiert, weil ich es so gelernt habe.
Code kannst du einfügen in dem du unten auf die Schaltfläche C/C++ klickst, dann deinen Quellcode schreibst und wieder auf die Schaltfläche klickst.
-
MrFryze schrieb:
Is egal ob du ein string oder ein Array verwendest. Ich habe immer mit arrays programmiert, weil ich es so gelernt habe.
Arrays verwendet man heute aber eigentlich nicht mehr.
std::vector ist ein guter ersatz dafür, welcher gleich auch
noch das Speichermanagemanet übernimmt, und zu dem dynamisch ist.
Die Daten der Klasse kannst du dann über den op<< bzw. op>> in die Datei
schreiben / lesen.Hier mal n kurzes Beispiel:
/* Header */ #include <iostream> #include <string> class SQLQuery { struct date {int t,m,j,std,min;}; public: SQLQuery(){} std::string Getquery(); void Setsql_query(std::string Sql_query); date Getdatum(); double Gettime(); public: SQLQuery(std::string sql, double time, int tag, int monat, int jahr, int stunde, int minute); virtual ~SQLQuery(); SQLQuery(const SQLQuery& copy); SQLQuery& operator=(const SQLQuery& copy); friend std::ostream& operator<<(std::ostream& o,SQLQuery& q); friend std::istream& operator>>(std::istream& i,SQLQuery& q); private: std::string sql_query; date datum; double time;/*seconds*/ }; /* cpp */ #include "SQLQuery.h" // SQLQuery SQLQuery::SQLQuery(std::string sql, double time, int tag, int monat, int jahr, int stunde, int minute):sql_query(sql),time(time) { datum.t = tag; datum.m = monat; datum.j = jahr; datum.std = stunde; datum.min = minute; } std::ostream& operator<<(std::ostream& o,SQLQuery& q) { o.write((const char*)&q.datum,sizeof(SQLQuery::date)); o << q.time << q.sql_query<< std::endl; return o; } std::istream& operator>>(std::istream& i,SQLQuery& q) { i.read((char*)&q.datum,sizeof(SQLQuery::date)); i >> q.time; std::getline(i,q.sql_query); return i; }
Devil