Ich habe eine funktionierende Logger-Klasse, die etwas Text in eine Richtextbox (Win32, C++) ausgibt. Problem ist, ich am Ende immer es wie folgt aus:Wie verwende ich meine Logging-Klasse wie einen C++ - Standardstrom?
stringstream ss;
ss << someInt << someString;
debugLogger.log(ss.str());
statt, wäre es viel bequemer, es wie ein Strom zu verwenden, wie in:
debugLogger << someInt << someString;
Gibt es einen besseren Weg, als alles an eine interne Stringstream-Instanz weiterleiten? Wenn ich das tun würde, wann müsste ich spülen?
Wie würde ich mit dem "Flush-Problem" umgehen, d. H. An einem Punkt muss ich alles in meine Richtextbox schicken. Soll ich den eingehenden Wert für "endline" testen? – newgre
Dies ist eine separate Frage, aber die Antwort ist einfach: anstelle von '\ n' verwenden Sie endl! Dadurch wird der Stream automatisch gelöscht. Um jedoch eine TextBox mit einem Stream zu verbinden, müssen Sie im Grunde einen eigenen Strompuffer implementieren (sehen Sie sich die rdbuf-Methode an). –
Oder fügen Sie Ihren eigenen Manipulatortyp hinzu, der endl/endet, mit einer Überladung des Operators <<, um ihn zu erkennen. – Kylotan