ausgabe in datei



  • Original erstellt von life_drake:
    Eben der Effekt, dass ich diesele Prozedur in jeder Funktion wiederholen muss?

    nein, einmal umgelenkt, bleibt das so.



  • Ok! Das klingt ja dann nicht mal so schlecht!
    Nur wieso schreit mein Compiler?



  • du hattest recht; hab jetzt die andere include Datei probiert ... bekomm aber den gleichen Fehler.

    Versuch bitte mal folgendes Minimalbeispiel:

    #include <iostream>
    #include <fstream>
    using namespace std;
    int main()
    {
        cout << "Das sieht man in der Regel auf dem Bildschirm" << endl;
        ofstream out("Datei.txt");
        streambuf* pOld = cout.rdbuf(out.rdbuf());
        cout << "Das kommt in die Datei" << endl;
        cout.rdbuf(pOld);
        cout << "Und das kommt wieder auf den Bildschirm" << endl;
    
    }
    

    Sollte das funktionieren, dann hast du in deinem anderen Projekt irgendwo noch alte Pre-Standard-Header inkludiert (z.B. <fstream.h> statt <fstream> ).

    Sollte das nicht funktionieren, geht die Umleitung mit den alten Streams so:

    #include <iostream.h>
    #include <fstream.h>
    int main()
    {
        cout << "Das sieht man in der Regel auf dem Bildschirm" << endl;
        ofstream out("File.txt");
        cout = out;
        cout << "Das geht in die Datei" << endl;
        filebuf f(1);
        cout = &f;
        cout << "Und das kommt wieder auf den Bildschirm" << endl;
    }
    

    Ein Singleton ist hier in meinen Augen überflüssig. Erstens gibt es bereits einen globalen Stream und zweitens ist es auch keine Problem einen weiteren anzulegen. Du brauchst hier ja keinen der Vorteile des Singleton-DPs (Erweiterung/Veränderung durch Vererbung usw.). Ein Singleton bringt dir hier also nix außer eine höhere Komplexität.

    [ Dieser Beitrag wurde am 27.03.2003 um 21:46 Uhr von HumeSikkins editiert. ]



  • @HumeSikkinsDanke für deine Antwort über Singleton.
    Hab jetzt deine Minibeispiele ausprobiert. Und hab dazu gleich mal ne Frage: Warum funktioniert bei mir nur das Programm mit den alten Streams? (Ich arbeite mit dem VC - Compiler unter Win2000)



  • Hallo,
    was sagt er denn zu dem Minibeispiel mit den neuen Streams?



  • Hello!
    Mit den neuen Streams meldet er noch immer:
    "rdbuf akzeptiert keine 1 Parameter"



  • Ich arbeite mit dem VC - Compiler unter Win2000

    Welche Version?



  • 6



  • Hallo,
    dann machst du irgendwas falsch. Die mit dem MSVC6 mitgelieferte Standardlib kennt die neuen Streams und hat mit dem Minimalbeispiel kein Problem.

    Oder hast du vielleicht die STL ausgetauscht?



  • Hallo!
    Ich kann dir leider nicht sagen, was ich falsch gemacht hab;
    Habs nochmal mit einem neuen Projekt probiert und da funktioniert es jetzt.
    Komischer Weise funktioniert es jetzt auch in meinem alten Projekt!
    Ich hab aber nichts geändert! Tja ...
    Danke auf jeden Fall für deine Idee!


Anmelden zum Antworten