cout-ähnlich



  • Hallo.
    Wenn ich eine Funtion zur formatierten Textausgabe schreiben will, wie mache ich das dann?
    In C wäre das:

    void ausgabe(int y , int x, const char* fmt, ...);
    

    Wie macht man das dann in C++?
    Übergibt man da dann einen stringstream oder wie?
    Die Funktion sollte halt so aufrufbar sein:

    ausgabe(10,10,"Var1 ist : " << var1 << ", str1 enthält '" << str1 << "'")
    


  • Also so eine Konstruktion wirst du nur mit Makros hinbekommen können:

    #define ausgabe(x,y,what) gotoxy(x,y);cout<<what;
    

    Ich würde dir aber einen Blick in die Improved Console empfehlen.



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ja gut, aber ich will in diesem Fall nicht auf die Konsole schreiben, sondern ich brauch die Ausgabe für meine Loggerklasse,
    damit ich sie so aufrufen kann:

    Logger logger;
    logger.log(LOG_MESSAGE, "variable1 = " << variable1 << "; blabla");
    

    Der Vergleich mit cout war nur, weil man bei cout (und anderen Datenströmen) den "<<"-operator hat.
    Danke.



  • Da solltest du lieber eine eigene Stream-Klasse definieren und deren operator<< nutzen (egal was dahintersteckt - Anweisungen wie "logger.log(LOG_MESSAGE, "variable1 = " << variable1 << "; blabla");" kriegst du nur mit Präprozessor-Hilfe durch den Compiler).

    Besser sähe es dann so aus:

    Logger log;
    log<<settyp(LOG_MESSAGE)<<"variable1 = " << variable1 << "; blabla";
    //Notiz - den Manipulator settyp() mußt du selber schreiben
    


  • Uffff.
    Danke, dann werde ich das dann doch wohl mit einer printf-ähnlichen Lösung schreiben.


Anmelden zum Antworten