Falls ihr vor der selben Problemstellung steht wie ich vor einiger Zeit ^^
Hier ist die Lösung :P
Hier ist die Lösung :P
Code:
//Nur eine Beispiel Struktur die ich für ein Programm genutzt habe
typedef struct
{
char szItem [256];
float fGewicht;
} sItem;
template <typename T>
void SaveList (list <T> listX, char *szFileName)
{
ofstream Output (szFileName, ios::binary); //Output file erstellen
int iSize = listX.size (); //Größe der übergebenen Liste bestimmen
list <T>::iterator listIt; //Iterator für die Liste erstellen
if (Output != NULL) //Nur wenn ein File erstellt wurde
{
Output.write ((char *)(&iSize), sizeof (iSize)); //Größe der Liste wird als erstes geschrieben
for (listIt = listX.begin () ; listIt != listX.end () ; ++listIt) //Die Liste iterieren
Output.write ((char *)(& (*listIt)), sizeof (T)); //Jedes Item in das File schreiben
Output.close (); //File schließen
}
}
template <typename T>
list <T> LoadList (list <T> listX, char *szFileName)
{
ifstream Input (szFileName, ios::binary); //Input File suchen
int iSize = 0;
list <T> lTempList; //Liste erstellen die nachher zurückgegeben wird
lTempList.clear (); //Leeren (nicht zwingend nötig)
T TempItem;
if (Input != NULL) //Wenn ein Input File gefunden wurde
{
Input.read ((char *)(&iSize), sizeof (iSize)); //Als erstes die Größe einlesen
for (int i = 0 ; i < iSize ; ++i) //Alle Items loopen
{
Input.read ((char *)(&TempItem), sizeof (T)); //Item einlesen
lTempList.push_back (TempItem); //In Liste einfügen
}
Input.close (); //File schließen
}
return (lTempList); //Erstellte Liste zurückgeben
}