Methode in Datei schreiben



  • Hallo!

    Ich hab ein kleines Problem und hoffe ihr könnt mir helfen. Ich wollte ganz gerne die Ausgabe dieser Methode hier:

    lalr->printReductionTree(rdc, 0);

    in eine datei (datei.txt) ausgeben lassen.

    Habt ihr eine Ahnung wie ich da vorgehen muss?

    Ostream datei("datei.txt",ios::app);

    datei << lalr->printReductionTree(rdc, 0);

    datei.close();

    funktioniert ja leider nicht. Kann mir jemand einen Tipp geben oder sagen wie man die Ausgabe in eine andere Datei umlenkt?

    MfG



  • mycrypt schrieb:

    funktioniert ja leider nicht.

    Unsere Glaskugeln haben grade Urlaub. Was heisst in deinem Fall "Funktioniert nicht"? Compilerfehler? Laufzeitfehler? Compiliert und laeuft aber es steht nichts drin?
    Als erstes wuerde ich raten, dass du eventuell den Stream flushen musst, wenn close() das nicht schon tut (hab da wenig Ahnung). Dann ist Ostream keine C++-Klasse, eher std::ostream oder, da es ja um eine Datei geht std::ofstream.

    Dann weiss man so auch nicht, was printReductiontree() so genau macht. Wenn es direkt in cout schreibt, ist die Funktion nicht vorausschauend designt sondern sollte evtl. als zusaetzliches Argument einen ostream uebergeben bekommen, in den dann geschrieben wird. Oder du gibst ein Objekt zurueck, das einen operator<< ueberladen hat und den Output entsprechend formatiert in einen ostream deiner Wahl gibt. Da gibts viele Moeglichkeiten. Aber ohne jedwede Information kann dir nicht geholfen werden.

    Siehe auch hier



  • Wie ist überhaupt die Signatur der Methode bzw was ist ihr Rückgabetyp?

    Und "funktioniert ja leider nicht" ist keine korrekte Fehlermeldung. Was funktioniert nicht?



  • mycrypt schrieb:

    ...

    lalr->printReductionTree(rdc, 0);

    in eine datei (datei.txt) ausgeben lassen.
    ...
    funktioniert ja leider nicht. Kann mir jemand einen Tipp geben oder sagen wie man die Ausgabe in eine andere Datei umlenkt?

    MfG

    Kein Problem. Du hast nur vergessen, den call zu aktivieren !
    Du musst anschließend noch

    lalr->doItReally(mode::right);
    

    aufrufen.

    Gruß,

    Simon2.



  • omfg simon

    hier die lösung

    http://support.microsoft.com/kb/58667/de



  • mycrypt schrieb:

    omfg simon

    hier die lösung

    http://support.microsoft.com/kb/58667/de

    Aha ... und was hat das mit Deinem Programm und "printReductionTree()" zu tun ?

    Gruß,

    Simon2.



  • Na vermutlich gibt die funktion auf der Standardausgabe aus.



  • richtig



  • evtl. kannst du das nächste mal die Antwortfindung beschleunigen, indem du mehr details angibst, in diesem fall etwa die Signatur der Funktion und die Information, dass sie auf der Konsole ausgibt.


Anmelden zum Antworten