Ausgabe-Funktion ähnlich Cout schreiben

Hallo!

Ich möchte eine einfache Funktion wie "Cout" selbst programmieren, die dann Daten in einer GUI ausgibt. Cout hat eben den Scharm, dass man verschiedene Textwerte einfach so hintereinander fügen kann.

cout << "Fester String " << variable1 << " wiederfest";

Leider habe ich wirklich überhaupt keine Ahnung wie cout funktioniert. Mir geht es darum, dass ich in so einfacher Form, wie bei cout, Ausgabewerte an die GUI übergeben kann. Das ganze als wstring/wchar_t. Zur Ausgabe auf die GUI habe ich eine Funktion "wprint(wstring ausgabewstring)", die nach der Verwendung von meinem GUI-Cout automatisch aufgerufen werden sollte.

Was ist cout denn eigentlich / wie funktioniert das? Ich kenne die Verwendung von "<<" nur in Verbindung mit stringstreams. Wird im Hintergrund überwacht, wann was in cout geschrieben wurde und wenn cout Daten enthält, werden diese ausgegeben?


Ich hoffe mein Problem wird so einigermaßen klar ;-)

Gruß

Nimda05
 
Du könntest doch eine Klasse von dem Textfeld (?) und 'ostringstream' kapseln , bzw. davon ableiten. Dann implementierst du halt ne Funktion die den 'string' aus dem gekapselten stream nimmt und in das Textfeld einfügt. (Statt ne Funktion könntest du nätürlich auch den '<<-Operator' überladen und dann so etwas schreiben:
Code:
StreamTextField textfield;
textfield<< "Rababerkuchen ist famos :D" << std::endl << StreamTextField::end_output;
'cout' macht das ähnlich , es schreibt nur den 'string' in 'stdout'.
Hoffe ich hab dir geholfen,
herzliche Grüße,
nt0r
 
Ja also Operatoren überladen ist das Stichwort.
Der << Operator wird überladen und die entsprechende Funktion gibt das eigene Objekt als Refernz zurück.

Kurzes Beispiel:
Code:
#include <cstdio>

class Output {

    public :

    Output& write(const char* s) {
        printf("%s", s);
        return (*this);
    }

    Output& operator<<(const char* s) {
        return this->write(s);
    }

};

int main()
{
    Output out;
    out << "test1 " << "test2 " << "test3\n";
    out.write("test4 ").write("test5 ").write("test6\n");
    return 0;
}
 
Ja also Operatoren überladen ist das Stichwort.
Der << Operator wird überladen und die entsprechende Funktion gibt das eigene Objekt als Refernz zurück.

Kurzes Beispiel:
Code:
#include <cstdio>

class Output {

    public :

    Output& write(const char* s) {
        printf("%s", s);
        return (*this);
    }

    Output& operator<<(const char* s) {
        return this->write(s);
    }

};

int main()
{
    Output out;
    out << "test1 " << "test2 " << "test3\n";
    out.write("test4 ").write("test5 ").write("test6\n");
    return 0;
}

Du will das ja bezogen auf ne GUI machen ?
Was denn für ne Library denn ?
 
Vielen Dank für das Beispiel mit der Klasse. Gerade eingebaut und funktioniert prima!

Ist ganz klassisch eine WinAPI. Das ist für mich im Moment noch totales Neuland, aber dadurch, dass mein Programm jede Menge Werte rausschmeist, ist mir eine Konsole zu unübersichtlich geworden und es musste was übersichtligeres her.
 
Zurück
Oben