Datensätze in Datei speichern...



  • Was kann ich dafür, wenn du es nicht verstehst.



  • Hallo

    siehe C++ FAQ, Thread Dateien und Ströme.

    bis bald
    akari



  • Akari, danke erstmal für die Antwort...das inner FAQ ist zwar mehr oder weniger was ich brauche...aber wenn ich viele Datensätze in eine Datei schreibe...wie kann ich dann den n-ten auslesen, man weiß doch nicht wie lang die davor sind !



  • Speicher einfach die Position (in bytes) der Datensätze irgendwo (anfang, ende, andere datei). 🙄



  • Ich glaube, du hast nicht verstanden was ein Dateiformat ist. Deine Frage hat weniger etwas mit C++ zu tun, als mit einem grundsätzlichen Verständnisproblem, welches in jeder Programmiersprache auftaucht.

    Im Prinzip mußt du dir Regeln für die Dateistruktur ausdenken bzw. für dich vereinbaren. Man könnte sich z.B. an bestehende Formate orientieren oder komplett selbst was ausdenken. Und dann mußt du deine Objekte entsprechende den Regeln rausschreiben. Beim Lesen der Datei mußt du dich ebenfalls an deine Regeln halten. Meistens liest und schreibt man einfach eine Datei komplett in einem Rutsch, im einfachsten Fall mit einer Schleife.

    for(int i=0; i< myvector.size(); i++)
    {
        myfstream << myvector[i];
    }
    

    Beim Lesen einfach umgekehrten Stream benutzen.

    Ob und wie vielleicht andersartige Objekte/Informationen zwischendurch gespeichert werden, diese Logic mußt du dir schon selber ausdenken um dein Problem zu lösen.

    Eine Hilfe wäre vielleicht auch dieser sehr gute Artikel, der sich ebenfalls einem solchen Problem annimmt:
    http://www.artima.com/cppsource/streamstrings.html

    Achja, dein struct sieht sehr nach C und nicht C++ aus... 🙄



  • Ich glaube, du hast nicht verstanden was ein Dateiformat ist. Deine Frage hat weniger etwas mit C++ zu tun, als mit einem grundsätzlichen Verständnisproblem, welches in jeder Programmiersprache auftaucht.

    DOCH!, ich hab mir da schon was ausgedacht...ich war mir halt nur nicht sicher wie die 'Datenblöcke' dann rekonstruieren kann...aber da hatte FachmannFürDaten ja ne gute Idee ...: Noch ne Datei mit den Byte Positionen !

    Achja, dein struct sieht sehr nach C und nicht C++ aus... 🙄

    Wieso, wie würde es denn in C++ aussehen, deiner Meinung nach ?

    Ob und wie vielleicht andersartige Objekte/Informationen zwischendurch gespeichert werden, diese Logic mußt du dir schon selber ausdenken um dein Problem zu lösen.

    Genau das war mein Problem... dachte dazu gibbet schon n' Fertigpacket 🤡



  • Dataset schrieb:

    Achja, dein struct sieht sehr nach C und nicht C++ aus... 🙄

    Wieso, wie würde es denn in C++ aussehen, deiner Meinung nach ?

    Gibts in C strings? 😕



  • 👍 eben! ...deswg. versteh ich Artchis Kommentar ja nicht 😕


  • Mod

    Dataset schrieb:

    👍 eben! ...deswg. versteh ich Artchis Kommentar ja nicht 😕

    er bezieht sich wohl auf die anachronistische art und weise der klassendefinition. in C++ teilen sich klassennamen den selben namensraum mit objekten und funktionen. es ist folglich nicht notwendig, noch zusätzlich einen typedefnamen dafür einzuführen.



  • Dataset schrieb:

    Noch ne Datei mit den Byte Positionen !

    Noch eine Datei? Das kannst du in eine Datei speichern.

    Dataset schrieb:

    Wieso, wie würde es denn in C++ aussehen, deiner Meinung nach ?

    struct XYZ 
    {
    };
    

    Dataset schrieb:

    Genau das war mein Problem... dachte dazu gibbet schon n' Fertigpacket 🤡

    Du könntest alles im XML-Format schreiben. Das wäre etwas, was es schon fertig gibt. Mußt dir nur einen XML-Parser schnappen, z.B. den von Apache. Oder du kannst von Boost die Serialization-Library benutzen, die dir deine Objekte autom. rausschreibt und auf Wunsch sogar noch zipped und autom. auch wieder reinlädt. Es gibt solche Dinge schon, nur mußt du trotzdem noch nen Finger krumm machen und vorallem: du mußt wissen ob du dich auf bestehende Formate stützen willst. (hab ich ja in meinem ersten Posting gesagt)

    http://www.boost.org/libs/serialization/doc/index.html
    http://xml.apache.org/xerces-c/


Anmelden zum Antworten