Datei schreiben mit Visual C++ (MFC)





  • am Anfang würde ich FILE anstatt CFILE nutzen auch wenns veraltet ist, aber bei nem kleinen string ist das viel leichter und verständlicher;

    FILE *m_fWrite;
    m_fWrite= fopen("C:\\datei.txt","w+"); 
    //1. Parameter ist der pfad zur datei
    //2. Parameter ist der Modus mit dem du die datei öffnet w+ (schreiben wenn sie
    //nicht existiert, erstellen
    fputs(m_strDeinString,m_fWrite);
    //Erster Parameter istd er String den du in die Datei schreiben willst
    //Zweiter Parameter ist der handle zur datei
    

    find ich persöhnlich einafcher, ist allerdings nciht überall geeignet



  • Vielen Dank an Alle! Jetzt hab ich geschafft 🙂



  • @bigmama

    am Anfang würde ich FILE anstatt CFILE nutzen auch wenns veraltet ist, aber bei nem kleinen string ist das viel leichter und verständlicher;

    1. hat das nix mit MFC zu tun
    2. ist Dein Code lange nicht perfekt, denn:
    2.1. Fehler: Abprüfung, ob Datei geöffnet werden konnte, fehlt
    2.2. Schliessen der Datei fehlt
    2.3. Erstellung von UNICODE-Projekt unmöglich

    Weiterhin frage ich mich, warum folgender Code so schwierig sein soll 😕

    CStdioFile file;
    if( file.Open( _T("C:\datei.txt"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
      file.WriteString( m_strDeinString);
    


  • CStdioFile file;
    if( file.Open( _T("C:\datei.txt"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
    file.WriteString( m_strDeinString);

    kann ich den code auch für ne konsolenanwendung verwenden? 😕



  • @Isa: Ja, aber nur wenn du die Unterstützung für die MFC mit eingebunden hast.

    Oder war das 'ne Funfrage 😃



  • Nein, das war keine Fangfrage 🙂

    Wie löse ich denn oben genanntes Problem, wenn ich keine MFCs eingebunden habe?
    Ich weiss einfach nicht wie ich in eine Datei einen String schreibe, weil alle Klassen, die das file-handling unterstützen ein char-feld wollen und keinen string. zusätzlich muss die lösung über mehrere klassen hinweg laufen.
    ich öffne in der einen klasse eine datei. in diese datei soll ein string aus einer anderen klasse geschrieben werden. ich übergebe einen filepointer, aber damit gehts nicht. wie denn?



  • @Isa: Hier mal ein kleines Beispiel, wie du mit Standard C++ Strings in eine Datei schreibst:

    // open the stream (if file not yet exist, create it)
        ofstream fout(m_cFileName, ios::out);
        if(!fout.is_open())
            return false;
        // generate the property stream
        std::string prop = "";
        for(unsigned int i = 0; i < m_vProperty.size(); i++) {
            prop +=  m_vProperty[i].key;
            prop += "=";
            prop += m_vProperty[i].value;
            prop += "\n";
        }
        fout.write(prop.c_str(), prop.size());
        fout.close();
    

    Keine Sorge, ich habe den Code nicht geklaut, er ist von mir und diese von mir erstellte Klasse ist frei erhältlich 😉
    Wie du sehen kannst akzeptiert der FileStream von C++ char*-Strings. Das heist du kannst eine ganzen Text auf einmal in eine Datei schreiben.



  • RenéG schrieb:

    [cpp]
    CStdioFile file;
    if( file.Open( _T("C:\datei.txt"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
    file.WriteString( m_strDeinString);
    [/code]

    Dieser Code funktioniert einwandfrei!
    Allerdings möchte ich gerne einen Text in meinen String schreiben, der Anführungszeichen besitzt. Wie mache ich das, wenn ich schon Anführungszeichen für das Einschließen des Textes verwenden muss? 😕
    Beispiel:
    [cpp]String = "Elays sagt: "Danke für Eure Hilfe""; // wie kann ich den Text ohne Fehlermeldung in String einfügen?[/cpp]
    Viele Grüße,

    Elayas



  • String = "Elays sagt: \"Danke für Eure Hilfe\"";


Anmelden zum Antworten