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.