Konsole immer an der gleichen Stelle ausgeben



  • Hey Leute,
    ist es möglich einen Text immer an der gleichen Stelle in der Konsole auszugeben?
    ALso nicht mit

    \n
    

    . Sondern z.B. ein Template das verschiedenste Sätze immer am Ende der Konsole ausgeben lässt ohne dies vorher manuell einzustellen?



  • im titel stehst "konsole [...] ausgeben".
    im post steht "Text immer an der gleichen Stelle in der Konsole auszugeben" und "Sätze immer am Ende der Konsole ausgeben".
    und was das ganze mit templates zu tun hat weiss ich auch nicht.

    kannst du dein anliegen bitte mal sauber formulieren?



  • Okay dann versuche ich das nochmal 😃
    Ich möchte einen Text in der Konsole per Template immer an der gleichen Stelle ausgeben.
    Z.B. :

    template<typename T> 
    void ausgabe(T text){
        cout << "--------------------------------------------------------------------------------";
        cout << text << "\n";
        cout << "--------------------------------------------------------------------------------";
    }
    

    Aber da dort wird manuell eingestellt an welcher "Stelle" der Text ausgegeben wird (

    \n
    

    .

    Ich hoffe nun ist es besser...



  • template<typename T>
    void ausgabe(T text){
        cout << "\n\n\n--------------------------------------------------------------------------------";
        cout << text << "\n";
        cout << "--------------------------------------------------------------------------------";
    }
    

    Hier ist der richtige Code.



  • Und wieso soll da ein Template für herhalten? Für die Windows-Konsole positioniert man einfach den Cursor dahin, wo man hin will:

    #include <windows.h>
    ...
    void SetCursorPosition(int x, int y)
    {
        COORD pos = {x, y};
    
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    }
    ...
    
    SetCursorPosition(3, 5);
    cout << "blabla";
    ...
    


  • ich frage mich eher wieso du das überhaupt tun willst. wenn man hübsche grafik usw. haben will, dann nutzt man ein gui-framework.



  • Weil ich mich erstens damit nicht auskenne, und ich habe gedacht wenn ein Template eine Schablone ist kann ich sie dafür benutzen...



  • Skeptar. schrieb:

    Weil ich mich erstens damit nicht auskenne, und ich habe gedacht wenn ein Template eine Schablone ist kann ich sie dafür benutzen...

    lies dir vielleicht nochmals die basics über templates durch. bei templates ist schablone aus einem komplett anderen kontext gemeint. koordinaten kannst du auch an gewöhnliche funktionen übergeben...



  • Ja mache ich 😃
    Weil ich dachte jedzt habe ich endlich mal ein Programm wo ein template rein muss, da ich eig. nicht genau weiß wo man ein Template benutzt.
    Danke für die Antworten!



  • Das sollen Schablonen für Funktionen sein. Zum Beispiel wenn du eine Funktion willst, die das Minimum zweier Werte berechnet:

    min(x, y){
        if (x < y)
            return x;
        return y;
    }
    

    Das Problem ist, dass das nicht kompiliert, weil x, y und der Rückgabewert einen Typ haben müssen. Es ist dir aber egal welcher Typ es ist, double, int, String... völlig Wurst. Dafür nimmt man dann ein Template:

    template<class T> T min(T x, T y){
        if (x < y)
            return x;
        return y;
    }
    

    Jetzt funktioniert min für alle Typen für die der "<"-Operator definiert ist. Das ist besonders bei Containern sinnvoll, damit man eine Liste von "egal was" definieren kann.



  • Okay danke euch allen (mal wieder)! 😃


Anmelden zum Antworten