Konsole Clear



  • Hey,
    ich würde gerne wissen wie ich eine vollgetextete Konsole lösche so das nur mein nächst gewünschter text angezeigt wird.



  • Hängt von der jeweiligen Plattform ab, die C++ Standardlibrary bietet dazu keine Möglichkeit.

    Indem du ein '\r' ausgibst kannst aber beispielsweise an den Anfang der aktuellen Zeile zurückspringen falls dir das schon was hilft. Ansonsten musst du mit der entsprechenden API deiner Plattform arbeiten oder z.B. eine entsprechende Library verwenden die das für dich erledigt.



  • system("cls"); // falls windows
    

    system zu benutzen, ist allerdings keine gute Wahl. Ob es andere Möglichkeiten außer diese gibt (für win), weiß ich grade nicht.

    lg



  • Natürlich gibt es unter Windows andere Möglichkeiten. Am Ende verwendet std::cout auch nur die WinAPI 😉



  • Für Windows:

    #include <windows.h>
    
    void ClearScreen(void)
    {
            HANDLE MyConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    
    	CONSOLE_SCREEN_BUFFER_INFO csbi;
    	COORD target;
    	DWORD written;
    
    	target.X = 0;
    	target.Y = 0;
    
    	GetConsoleScreenBufferInfo(MyConsole, &csbi);
    	FillConsoleOutputCharacter(MyConsole, ' ',
    											csbi.dwSize.X * csbi.dwSize.Y,
    											target, &written);
    }
    


  • Unter UNIX (bzw. ANSI-konformen Terminals):

    std::cout << "\x1b[2J\x1b[H" << std::flush;
    

Log in to reply