texto sobrescribir sirve setcursorposition que posicionar para modo lenguaje insertar gotoxy entre coordenadas con como centrar cambiar c++ c windows console

c++ - sobrescribir - gotoxy en c



Mueve el cursor de texto a una coordenada de pantalla particular? (5)

En caso de que esté hablando de la biblioteca ncurses , la función que busca es move (row, column) .

¿Cómo puedo establecer el cursor en la ubicación deseada en la consola en C o C ++?

Recuerdo una función llamada gotoxy(x,y) , pero creo que está en desuso. ¿Hay alguna alternativa?


Me di cuenta de esto para establecer el cursor.

#include <iostream> void setPos(std::ostream& _os, const std::streamsize& _x, const std::streamsize& _y) { char tmp = _os.fill(); if(_y>0) { _os.fill(''/n''); _os.width(_y); _os << ''/n''; } if(_x>0) { _os.fill('' ''); _os.width(_x); _os << '' ''; } _os.flush(); _os.fill(tmp); } int main(int argc, char **argv) { setPos(std::cout, 5, 5); std::cout << "foo" << std::endl; return 0; }

Para hacer más necesitarás suposiciones sobre la resolución o una lib como ncurses .


Ni C ni C ++ tienen ninguna noción de una pantalla o consola; solo ven flujos de bytes, que no tienen características de visualización inherentes. Hay una serie de API de terceros como ncurses para ayudarlo a hacer eso.

Si quiere una solución rápida y sucia y la terminal con la que está trabajando entiende las secuencias de escape de ANSI , entonces puede hacer cosas como

printf("/033[%d;%dH", row, col);

para mover el cursor a una fila y columna específica (donde la esquina superior izquierda es {1,1}). Sin embargo, sería mejor usar ncurses (o el equivalente para su plataforma).


Use SetConsoleCursorPosition .

Hay muchas otras funciones en la misma parte de la biblioteca de MSDN. Algunos de ellos también pueden ser útiles.


Utilizo un método realmente simple. No necesita saber qué es HANDLE a menos que esté realmente inmerso en aplicaciones de consola, un objeto COORD está en la biblioteca estándar windows.h y tiene dos intergers de datos de miembros X e Y. 0,0 es la parte superior izquierda esquina e Y aumenta para bajar la pantalla. Puede usar este comando y simplemente continuar usando std :: cout << para imprimir lo que necesite.

#include <windows.h> int main(void){ //initialize objects for cursor manipulation HANDLE hStdout; COORD destCoord; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); //position cursor at start of window destCoord.X = 0; destCoord.Y = 0; SetConsoleCursorPosition(hStdout, destCoord); }