String in Textdatei schreiben



  • Hi, ich habe eine Frage zum Schreiben in eine Datei!

    So schreibe ich den String in die Datei. Der String enthält alle möglichen Ascii-Zeichen!

    string encText;
    char * TextSchreibBuffer;
    CFile textDat;
    	textDat.Open(txtDatei,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary,NULL);
    textDat.Write(TextSchreibBuffer, encText.length());
    textDat.Close();
    

    Jetzt habe ich allerdings das Problem, dass mir in der Textdatei (geöffnet mit Notpad) Umbrüche als ein Rechteck angezeigt werden. Woran kann das liegen? Wenn ich sie im Worpad ansehe sind sie vorhanden.



  • Jetzt habe ich allerdings das Problem, dass mir in der Textdatei (geöffnet mit Notpad) Umbrüche als ein Rechteck angezeigt werden. Woran kann das liegen? Wenn ich sie im Worpad ansehe sind sie vorhanden.

    Hallo,

    Das liegt daran, dass du die Datei binär geöffnet hast und so byte für byte - so wie es ist - in die Text-Datei schreibst (Raw-Modus). Wenn du die Datei nicht binär öffnest, werden Steuerzeichen (z.B. Zeilenumbruch) vom Betriebssystem gesondert interpretiert. (Cooked-Modus).

    Gruß Caipi



  • Wahrscheinlich, weil Windows normalerweise CR LF (oder andersherum, ich bin mir da nicht so sicher) als Zeilenumbruch hat und Notepad nur diese Variante annimmt, Wordpad aber auch den normalen LF interpretiert.
    Übrigens ist das kein Standard-C++ Vorgehen, das sähe in etwa so aus:

    std::string s;
    // ...
    std::ofstream out ("txtDatei.txt");
    out << s;
    out.close ();
    

    Das übersetzt auch den \n-Char entsprechend.



  • .filmor schrieb:

    CR LF (oder andersherum, ich bin mir da nicht so sicher)

    So rum ist richtig :).

    Gruß Caipi



  • Hab die datei jetzt mal Textmodus geöffnet. Also CFile::typeText. Funktioniert allerdings auch nicht.
    Die Variante mit dem Stream bringt auch keinen Erfolg.

    Wenn ich mir während des Debugens enText und TextSchreibBuffer ansehe, passt ja alles, nur dann in der *.txt nicht. Hängt es damit zusammen, wie der Datentyp der Constante ist die in die Textdatei geschrieben wird?


Anmelden zum Antworten