Veröffentlicht 6. März 201015 j Hi, ich habe hier ein 2-dimensionales Array, dessen werte ich gerne in eine Datei speichern würde. das Array ist vom Typ Integer. wie stelle ich das an und vor allem, wie lese ich das ganze zum schluss wieder aus? und: wie würde das bei einem 3D-array aussehen?
7. März 201015 j wie stelle ich das an und vor allem, wie lese ich das ganze zum schluss wieder aus?Kommt drauf an. Wenn du weißt, dass Lesen und Schreiben immer auf Systemen erfolgt, auf denen int in Aufbau (Big/Little Endian) und Größe gleich ist, kannst du einfach das ganze Array mit fwrite bzw. ofstream::write speichern und mit fread bzw. ifstream::read einlesen. Wenn du das nicht sicher weißt, musst du die Daten so speichern, dass du daraus unabhängig von der Architektur des Rechners wieder so ein Array aufbauen kannst, z.B. als Text. wie würde das bei einem 3D-array aussehen?Genauso. Was soll es denn sein, C oder C++?
7. März 201015 j Ãch lese immer aus der gleichen datei genau das gleiche array ein. dadrin befinden sich standartwerte, die sich quasi nie ändern. mfg
10. März 201015 j achja, und es sollte in C++ sein. das array besteht nur aus integer-werten und hat eine fest definierte größe. mfg
10. März 201015 j // Schreiben std::ofstream outfile("dein_dateiname", std::ios_base::binary); outfile.write(reinterpret_cast<const char*>(&dein_array), sizeof(dein_array)); // Lesen std::ifstream infile("dein_dateiname", std::ios_base::binary); infile.read(reinterpret_cast<char*>(&dein_array, sizeof(dein_array)); [/code]
11. März 201015 j Hi, habe das jetzt mal eingefügt und er zeigt mir nur fehler an: 1>------ Erstellen gestartet: Projekt: dateitest, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>main.cpp 1>c:\users\sebastian\documents\visual studio 2008\projects\myfreefarm_cmd\dateitest\main.cpp(14) : error C2143: Syntaxfehler: Es fehlt ')' vor ';' 1>c:\users\sebastian\documents\visual studio 2008\projects\myfreefarm_cmd\dateitest\main.cpp(14) : error C2660: 'std::basic_istream<_Elem,_Traits>::read': Funktion akzeptiert keine 1 Argumente 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1>Das Buildprotokoll wurde unter "file://c:\Users\Sebastian\Documents\Visual Studio 2008\Projects\myfreefarm_cmd\dateitest\Debug\BuildLog.htm" gespeichert. 1>dateitest - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== hier der code: #include <fstream> #include <iostream> using namespace std; int main() { int f[12][10][2]; // Schreiben std::ofstream outfile("text.txt", std::ios_base::binary); outfile.write(reinterpret_cast<const char*>(&f), sizeof(f)); // Lesen std::ifstream infile("text.txt", std::ios_base::binary); infile.read(reinterpret_cast<char*>(&f, sizeof(f)); }
11. März 201015 j infile.read(reinterpret_cast<char*>(&f), sizeof(f)); Ja, da habe ich wohl eine Klammer vergessen
11. März 201015 j wie muss ich das ganze modifizieren, damit ich strings abspeichern/lesen kann (auch immer die gleiche festgelgte größe etc.).
11. März 201015 j Wenn es sich um char-Arrays handelt, musst du gar nichts modifizieren. Ansonsten musst du das Array von Hand serialisieren, weil durch char-Zeiger oder String-Klassen das Array nicht mehr als zusammenhängender Speicherbereich vorliegt.
11. März 201015 j die strings sind jeweilks nur ein wort, alkso sowas wie "eier", "kartoffeln", oder sowas
11. März 201015 j die strings sind jeweilks nur ein wort, alkso sowas wie "eier", "kartoffeln", oder sowas Der Inhalt ist völlig unerheblich, auf den Datentyp kommt's an.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.