String in Datei schreiben



  • Ich schreibe gerade ein Dialogbasierendes MFC Programm das
    wenn ich auf einen Button klicke einen String auf die Festplatte,
    in eine Datei, schreiben soll.
    Beim klick auf einen anderen Button soll dann später
    der String wieder von der Festplatte gelesen werden.
    Mir fehlt vollkommen der Ansatz. Hat da jemand eine Idee.

    hal_ibm



  • CStdioFile 🙂



  • Wow.
    Kurz, knapp und schnell.
    Weiss aber noch nicht ob ich damit was anfangen kann.
    Ist sher kurz. aber mal sehen.
    Erstmal danke.

    hal_ibm



  • Hier mit der Forumsuche müsstest du eigentlich Beispiele finden. 🙂



  • CFile find ich persoenlich besser #gg



  • CFile gibt aber selbstständig nachrichten aus, z.b. das die datei nicht existiert. dieses verhalten ist imo nicht so praktisch.



  • Ist CStdioFile nicht von CFile abgeleitet? 😉
    Ich finde es für Strings eben angenehmer, wenn ich Zeilenweise lesen und schreiben kann.



  • Hallo

    Bist du schon weiter gekommen?

    chrische



  • CFile gibt aber selbstständig nachrichten aus, z.b. das die datei nicht existiert. dieses verhalten ist imo nicht so praktisch

    CFile gibt keine Nachrichten aus, es wirft bloss Exceptions mit einer Fehlerbeschreibung. Wenn man natürlich die Exception fängt, und ReportError aufruft, dann wird die Nachricht angezeigt.

    Und ja, CStdioFile ist von CFile abgeleitet und wirft im übrigen auch solche Exceptions. Und ersetzt \r\n -> \n beim Lesen bzw. \n -> \r\n beim Schreiben.

    @hal_ibm: wenn du mit Textfiles arbeiten möchtest nimm CStdioFile, wenn du mit Binärfiles arbeiten willst nimm CFile.

    http://msdn2.microsoft.com/en-us/library/60fh2b6f%28VS.80%29.aspx



  • oder so

    std::vector<byte>vContent
    std::ifstream file(_T("C:\\FileName.bin"), std::ios_base::binary);
    if(!file.is_open())
        return ERR_ATTACH;
    std::copy(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(), std::back_inserter(vContent));
    file.close();
    
    std::ofstream file(_T("C:\\FileName.bin"), std::ios_base::binary);
    if(!file.is_open())
        return ERR_CREATEFILE;
    if(!vContent.empty())
        file.write(vContent, vContent.size());
    file.close();
    


  • Hallo. Hatte wenig Zeit.
    Danke für die Hilfe.
    Ich habe es so wie von estartu vorgeschlagen gemacht.
    Habe CStdioFile benutzt.

    hal_ibm


Log in to reply